2016-04-28 110 views
0

对不起,但我无法解释我阅读了很多接近问题的博客后所得到的错误。ExecuteStoreQuery引发System.Data.Entity.Core.EntityCommandExecutionException

我有以下存储过程

CREATE PROCEDURE dbo.AddUserToRole 
    @UserName nvarchar(256), @RoleId nvarchar(128), 
    @UserId nvarchar(128) OUTPUT 
AS 
BEGIN 
    SET NOCOUNT ON; 
    SELECT @UserId = Id FROM dbo.AspNetUsers WHERE dbo.AspNetUsers.UserName = @UserName 
    INSERT INTO dbo.AspNetUserRoles (UserId,RoleId) VALUES(@UserId,@RoleId) 
END 
GO 

我打电话,如下所示:

var userNameParameter = new SqlParameter("UserName", userName); 
var roleIdParameter = new SqlParameter("RoleId", roleId); 
string userId = ""; 
var UserIdParameter = new SqlParameter("UserId", userId); 
UserIdParameter.Direction = System.Data.ParameterDirection.Output; 
((IObjectContextAdapter)this).ObjectContext.ExecuteStoreQuery<string>("AddUserToRole @UserName, @RoleId, @UserId", userNameParameter, roleIdParameter, UserIdParameter); 

,但我得到下面的异常 数据读取器有一个以上的领域。多个字段对于EDM基元或枚举类型无效。

对不起,但我会很感激任何帮助。我不想只是修复,但我想知道确切的问题是什么。

感谢

回答

0

尝试这样做

ExecuteStoreQuery<string>("Exec AddUserToRole @UserName, @RoleId, @UserId", userNameParameter, roleIdParameter, UserIdParameter); 
+0

感谢马赫迪,但它给我同样的错误。如果有问题,我正在使用EF6。 –

+0

尝试在你的sp中返回一个字符串值。插入后推荐 ,编写select“foo” –

相关问题