在向我的数据库添加新的存储过程并在 Visual Studio 2012 中更新我的实体框架模型后,我收到以下错误消息:
数据读取器与指定的“MyDb.usp_GetRolesForUser_Result”不兼容。类型的成员“RoleType”在数据读取器中没有同名的对应列。
我不明白这个问题是如何发生的,因为模型是从数据库/存储过程生成的。我尝试从模型中删除存储过程(存储过程、函数导入和复杂类型文件夹),然后从数据库中刷新。
注意:这是由类库使用的,当我使用 MVC Web 应用程序测试类库时收到错误消息。我已经确定我已经重建了这两个项目。
如果我从 select 语句中删除r.RoleType,刷新模型并重建项目,则不会出现错误。RoleType 是 nvarchar(100),AppName 是 nvarchar(250)。
存储过程:
USE [MyDb]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[usp_GetRolesForUser]
@i_intId int = NULL
AS
SET NOCOUNT ON
BEGIN TRY
SELECT r.RoleId, r.RoleType, a.AppId, a.AppName
FROM [USER] u INNER JOIN [USERROLE] ur on u.UserId = ur.FkUserId
INNER JOIN [ROLE] r on ur.FkRoleId = r.RoleId
INNER JOIN [APPLICATION] a on r.FkAppId = a.AppId
WHERE u.UserId = @i_intId
ORDER BY a.AppName, r.RoleType
END TRY
BEGIN CATCH
/*error catching*/
END CATCH
RETURN
生成的类:
public partial class usp_GetRolesForUser_Result
{
public int RoleId { get; set; }
public string RoleType { get; set; }
public int AppId { get; set; }
public string AppName { get; set; }
}
非常感谢您的帮助 :)