Hoa*_*iet 1 .net c# sql database
我的工作项目有问题(使用ADO.net实体框架).我的数据库有2个表:
https://i.stack.imgur.com/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
Run Code Online (Sandbox Code Playgroud)
我尝试运行此存储过程并收到一条消息错误,显示:"数据读取器与指定的'TEST2Model.SP_SELECT_Result'不兼容.类型成员'Name1'在数据中没有对应的列读者同名."
我认为它在ITEM中的属性"Name"和CATEGORY中的"Name"之间存在问题.请帮忙,谢谢!
数据读取器与指定的"TEST2Model.SP_SELECT_Result"不兼容.类型为"Name1"的成员在数据读取器中没有相应的具有相同名称的列.
那个错误非常清楚.大多数情况下,您有一个名为的类,SP_SELECT_Result并且您的存储过程一次返回包含该列的结果,Name1因此生成了该类.您已经修改了存储过程,但是您还没有更新该代码.因此,在读取存储过程的结果时,DataReader正在尝试设置其Name1属性,SP_SELECT_Result但由于存储过程在其结果中不再具有该属性,因此无法找到它.
此外,您现在还有2个具有相同名称的列:Name在结果中.这不会起作用.
怎么修?
更改存储过程以返回具有唯一名称的列.此外,在Visual Studio中右键单击模型中的存储过程,然后选择"从数据库更新" SP_SELECT_Result,以便可以使用最新的存储过程更改来更新.
您需要为每个列指定一个唯一的名称,以便DataReader可以在您使用时识别每个列Item[].在此示例中,我将第二列和第三列的名称分别更改为"ItemName"和"CategoryName".
CREATE PROCEDURE [dbo].[SP_SELECT]
AS
BEGIN
SELECT I.Id, I.Name ItemName, C.Name CategoryName
FROM ITEM I, CATEGORY C
WHERE I.CategoryID = C.Id
END
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16230 次 |
| 最近记录: |