c# - 数据阅读器与指定的不兼容,...在数据阅读器中没有同名的对应列

标签 c# sql .net database

我的工作项目(使用 ADO.net Entity Framework )有问题。我的数据库有 2 个表:

/image/y3NzM.png

这是我的存储过程:

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_ResultName1 属性,但找不到它,因为您的存储过程的结果中不再有那个。

现在您的结果中还有 2 个具有相同名称的列:Name。这是行不通的。

如何修复?

更改您的存储过程以返回具有唯一名称的列。此外,在 Visual Studio 中右键单击模型中的存储过程,然后选择“从数据库更新”,以便它可以使用最新的存储过程更改更新 SP_SELECT_Result

关于c# - 数据阅读器与指定的不兼容,...在数据阅读器中没有同名的对应列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41133390/

相关文章:

c# - 为什么 ExecuteStoredProcedure 有效而下面的代码无效?

c# - 绑定(bind)到数据库的自定义通用 IEnumerator

c# - 更新后无法构建 .NET Core 项目

javascript - ASP.NET Page_Load 与 AJAX 页面刷新代码重用/冗余?

c# - 使用正则表达式匹配零

sql - 亚马逊 Redshift 中的上次更新查询计数

.Net Core 2 Sql Server 连接

c# - 什么事件捕捉到 DataGridViewCell 中组合框中值的变化?

c# - Pow(x,y) 函数的工作流程是什么?

mysql - 子查询返回多行错误