具有多个记录集的实体框架存储过程不接受我的参数

时间:2013-05-10 21:34:29

标签: entity-framework c#-4.0 ado.net

我正在使用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。

1 个答案:

答案 0 :(得分:1)

你必须添加

cmd.CommandType = CommandType.StoredProcedure;

cmd.ExecuteReader()之前的某个地方。