【发布时间】:2014-03-19 23:05:55
【问题描述】:
我在使用 EF 5 时遇到以下错误,我在网上对其进行了大力研究,并认为这只是一个映射问题。我检查过的一切都很好。
有人可以根据以下信息告诉我错误可能是什么吗???
数据读取器与指定的不兼容 'VisionModel.sSRPTFundexDocCodes1_Test_Result'。类型的成员, 'NumEmployeesatApp1',在数据中没有对应的列 同名阅读器。
当我调试下面的代码sn-p时,就在我得到上述错误的时候。
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<sSRPTFundexDocCodes1_Test_Result>("sSRPTFundexDocCodes1_Test", subscriberIDParameter, applicationNumParameter);
进入存储过程的参数是OK的。
映射很好。左边的映射是:NumEmployeesatApp,右边是完全一样的。
我完全删除了我的 EDMX 文件并从头开始创建它,但发生了同样的错误。 当我从函数中执行“获取列信息”时,列名与上述存储过程中的内容完全相同。
从 EDMX 文件 (Vision) 生成的模板和上面的存储过程具有完全匹配的列。
顺便说一句,我可以毫无问题地从 EF 5 模型运行其他 INSERT 和 SELECT LINQ 查询。
【问题讨论】:
-
我在应用程序之外运行了存储过程,它返回 3 条记录...这让我感到困惑..我不知道我还能做什么...
-
存储过程返回的列的名称是否正确 - 存储过程返回的结果集中是否有 NumEmployeesatApp1 列或告诉 EF NumEployeessatApp1 属性期望的列名称是什么的映射?
-
这是我希望进入我在上面发布的 sn-p 并实际看到 EF 处理请求的部分(类似于进入类型化数据集生成的代码并查看命令和列是什么那里。sn-p 是“return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction
("sSRPTFundexDocCodes1_Test",subscriberIDParameter, applicationNumParameter);" 但是,一旦我到了这一点并尝试进入它,我就可以't。 -
我仔细检查了我的调试选项,并且我在调试选项中未选中“仅启用我的代码”,我应该能够进入生成的代码。如果我能够进入这里,我相信我将能够看到发生了什么......任何关于这方面的帮助将不胜感激......
-
EF5 代码不是开源的。即使您使用公共符号,您也可能无法单步执行代码,因为没有可用的资源。此外,您不会看到很多,因为代码将被优化,除了一些局部变量之外您将看不到任何东西。但是,您可以做的是使用 Sql Profiler 查看 EF 发送到数据库的内容(您也可以使用 IntelliTrace 查看它)。尝试执行 EF 发送到 Sql 查询的确切命令并查看结果。用结果和 sn-p 更新您的问题,显示您如何在 MSL&CSDL 中映射存储过程
标签: entity-framework