使用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