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 でした。