我创建了一个存储过程,它接受参数来创建用户。如果用户已存在,则将输出参数设置为“用户已存在”,并且不执行任何操作。
现在我已经将这个函数(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 ) AS /* Saves a user to the db. */ BEGIN --First check if the user doesn't exist IF EXISTS (SELECT eMail FROM UserSet WHERE eMail = @eMail) --Return that user exists SET @output = 'User exists' ELSE INSERT INTO UserSet VALUES (@eMail, @firstName, @lastName, @passwordHash, @salt) END
答案 0 :(得分:10)
你也可以用以下方式写作:
string output = "";
context.InsertNewUser(email, name, passwordhash, salt, ref output)
答案 1 :(得分:6)
我用这段代码解决了它:
//This will provide the parameter System.Data.Objects.ObjectParameter parameter = new ObjectParameter("output", "nvarchar(256)"); //This will contain the returned values ObjectResult result = context.CheckIfUserExists(eMail, parameter);
答案 2 :(得分:1)
我用以下代码解决了这个问题:
//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