0

Entity Framework を使用してストアド プロシージャから複数のレコード セットを読み取るための Microsoft の推奨ソリューションを使用していますが、パラメーターを使用するために小さなスニペットを追加しましたが、機能していません。同僚にコードを見てもらい、動作するはずだと言われたので、ここで質問したいと思いました。

4.5 フレームワークの使用はオプションではありません。私は 4.0 と etity フレームワーク 4.4 で立ち往生しています。

            App MyApp = (App)Application.Current;
            EnterpriseEntities EE = new EnterpriseEntities();
            EE.Database.Connection.ConnectionString = MyApp.EnterpriseEntityConnectionString;

            var cmd = EE.Database.Connection.CreateCommand();
            cmd.CommandText = "[dbo].[spSelectWaterUsesByRightID]";
            var param = cmd.CreateParameter();


            param.Direction = ParameterDirection.Input;
            param.DbType = DbType.Int32;
            param.ParameterName = "@RightID";
            param.Value = this.RightID;

            cmd.Parameters.Add(param);


            EE.Database.Connection.Open();
            var reader = cmd.ExecuteReader();

            List<WaterUses> ListOfWaterUses = (((System.Data.Entity.Infrastructure.IObjectContextAdapter)EE)
                    .ObjectContext
                    .Translate<WaterUses>(reader, "WaterUses",System.Data.Objects.MergeOption.AppendOnly)).ToList(); 

ExecuteReader 行に到達すると、ストアド プロシージャにはパラメータ @RightID が必要であるというエラー メッセージが表示されますが、それが渡されます。実行直前にパラメータ数を確認したところ、1 でした。

4

1 に答える 1

1

追加する必要があります

cmd.CommandType = CommandType.StoredProcedure;

どこか前にcmd.ExecuteReader()

于 2013-05-10T22:44:26.057 に答える