Entity framework 两个同名程序&;选择类型,但EF抱怨数据读取器不兼容
我在两个DB中有两个相同的程序,我的意思是:Entity framework 两个同名程序&;选择类型,但EF抱怨数据读取器不兼容,entity-framework,stored-procedures,sql-server-2008-r2,Entity Framework,Stored Procedures,Sql Server 2008 R2,我在两个DB中有两个相同的程序,我的意思是: 同名 相同的参数名称和类型 以返回相同列类型和名称的select结束(如果我将select…放入表中它将生成完全相同的表) 唯一不同的是为最终选择构建sql查询的代码。 如果我在数据库1上使用EF,它将按预期工作,但如果我在数据库2上运行代码,它将以错误结束: 数据读取器与指定的“Ctx.Procedure\u Result”不兼容。“FooId”类型的成员在数据读取器中没有同名的对应列 我正在使用: 实体框架4.2 VisualStudio2
- 同名
- 相同的参数名称和类型
- 以返回相同列类型和名称的select结束(如果我将
它将生成完全相同的表)select…放入表中
- 实体框架4.2
- VisualStudio2010
- Sql Server 2008 R2
请随意询问更多详细信息。我的错,因为我建议使用SQL Server Profiler跟踪EF查询 事实上,EF在一个可选参数中使用NULL,该参数破坏了过程中的sql查询('select…'+NULL=>NULL)
如果查询为空,则过程根本不选择任何列,从而导致EF数据读取器崩溃。是否发布相关代码部分?还有查询和表?在所选记录集中有
FooId
列-正如您在异常中看到的,这是缺少的列。如果存储过程中有一些逻辑,则可能发生的另一件事是,可能不会返回任何结果(与空记录集相反),这意味着您根本没有列。使用Sql Profiler跟踪EF发送到“不工作”数据库的查询,手动运行查询并查看结果。我感觉两个数据库中的数据不同,因此存储过程的行为也不同。好吧,伙计们,这是我的错,我建议使用SQL Server Profiler跟踪EF查询。事实上,EF在一个参数中使用NULL,该参数破坏了过程中的sql查询('select…'+NULL=>NULL)