使用LINQ和Entity Framework获取存储过程输出参数

我创建了一个存储过程,它接受参数来创建用户。 如果用户已存在,则将输出参数设置为“用户已存在”,并且不执行任何操作。

现在我已将此函数(InsertNewUser)映射到我的entity framework,并调用它如下:

 context.InsertNewUser(email,name,passwordhash,salt,???)

??? 是我遇到麻烦的地方。 在存储过程中,此参数是OUTPUT参数。 我尝试声明一个字符串,然后传入“out declaredString”但这不正确。

我不确定我是以正确的方式去做,有什么想法吗?

这是存储过程:

 ALTER PROCEDURE dbo.InsertNewUser

     (
     @eMail nvarchar(256),
     @firstName nvarchar(256),
     @lastName nvarchar(256),
     @passwordHash nvarchar(256),
     @salt nvarchar(256),
     @output nvarchar(256)OUTPUT
     )

如
     / *将用户保存到数据库。  * /
    开始
     - 首先检查用户是否不存在
     IF EXISTS(从UserSet发送电子邮件到WHERE eMail = @eMail)  
         - 返回该用户存在
         SET @output ='用户存在' 
    其他    
         INSERT INTO UserSet
         VALUES(@eMail,@ firstName,@ lastName,@ passwordHash,@ salt)
    结束

您也可以通过以下方式编写:

string output = ""; context.InsertNewUser(email, name, passwordhash, salt, ref output) 

我用这段代码解决了它:

 //这将提供参数
 System.Data.Objects.ObjectParameter parameter = new ObjectParameter(“output”,“nvarchar(256)”);
 //这将包含返回的值
 ObjectResult result = context.CheckIfUserExists(eMail,parameter);

我用以下代码解决了它:

 //Execute stored procedure ObjectParameter newkey = new ObjectParameter("newKey", typeof(char)); db.RF_GetNewKey("A", "B", "S",newkey); //get new key output from stored procedure RF_GetNewKey string myKey=newkey.Value.ToString(); 

使用Entity Framework 6