我在两个数据库中有两个相同的程序,我的意思是:
- 一样的名字
- 相同的参数名称和类型
- 以返回相同列类型和名称的选择结束(如果我放一个
SELECT ... INTO table
它会生成完全相同的表)。
唯一不同的是为最终选择构建 sql 查询的代码。如果我在数据库 1 上使用 EF,它会按预期工作,但如果我在数据库 2 上运行代码,它会以错误结束:
数据读取器与指定的“Ctx.Procedure_Result”不兼容。类型的成员“FooId”在数据读取器中没有同名的对应列。
我正在使用:
- 实体框架 4.2
- 视觉工作室 2010
- Sql Server 2008 R2
我没有足够的 EF 内部知识来理解为什么会发生这种情况。我的想法是必须有一些列类型/名称嗅探机制,它们不会嗅探相同的东西。
编辑1:
该过程不会“返回”表类型,它只是“选择”一些行。此选择结果映射到 EDMX 中的 ComplexType。
随时询问更多细节。