我正在使用Microsofts建议的解决方案,使用Entity Framework从存储过程中读取多个记录集,但添加了一个小片段来使用参数,但它无法正常工作。我有一个同事看看代码并告诉我它看起来应该有效,所以我想我会在这里问。
使用4.5框架不是一种选择。我坚持使用4.0和etity framework 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。
答案 0 :(得分:1)
你必须添加
cmd.CommandType = CommandType.StoredProcedure;
cmd.ExecuteReader()
之前的某个地方。