我的工作项目(使用 ADO.net Entity Framework )有问题。我的数据库有 2 个表:
这是我的存储过程:
CREATE PROCEDURE [dbo].[SP_SELECT]
AS
BEGIN
SELECT I.Id, I.Name, C.Name
FROM ITEM I, CATEGORY C
WHERE I.CategoryID = C.Id
END
我尝试运行此存储过程,但收到一条错误消息:“数据读取器与指定的‘TEST2Model.SP_SELECT_Result’不兼容。‘Name1’类型的成员没有相应的列在具有相同名称的数据读取器中。”
我确实认为它在 ITEM 中的属性“Name”和 CATEGORY 中的“Name”之间存在问题。 请帮忙,谢谢!
最佳答案
The data reader is incompatible with the specified 'TEST2Model.SP_SELECT_Result'. A member of the type, 'Name1', does not have a corresponding column in the data reader with the same name.
这个错误很明显。最像是您有一个名为 SP_SELECT_Result
的类,并且您的存储过程一度返回一个包含列 Name1
的结果,因此生成了该类。然后您修改了您的存储过程,但您还没有更新该代码。因此,在读取存储过程的结果期间,DataReader
试图设置 SP_SELECT_Result
的 Name1
属性,但找不到它,因为您的存储过程的结果中不再有那个。
现在您的结果中还有 2 个具有相同名称的列:Name
。这是行不通的。
如何修复?
更改您的存储过程以返回具有唯一名称的列。此外,在 Visual Studio 中右键单击模型中的存储过程,然后选择“从数据库更新”,以便它可以使用最新的存储过程更改更新 SP_SELECT_Result
。
关于c# - 数据阅读器与指定的不兼容,...在数据阅读器中没有同名的对应列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41133390/