我正在嘗試使用我的密碼。使用輸出參數調用實體框架過程時出錯
這裏是我的存儲過程返回我的PW作爲一個nvarchar(512):
alter proc [dbo].g_GetPWFromEmail
@emailAddress nvarchar(50),
@EncrPass nvarchar(512) OUTPUT
as
if ((Select count(*) from users where emailAddress = @emailAddress) > 0)
begin
select @EncrPass = password
from users
where emailAddress = @emailAddress
end
else
begin
select @EncrPass = ''
end
這裏是什麼在emdx文件架式:
public virtual ObjectResult<string> g_GetPWFromEmail(string emailAddress, ObjectParameter encrPass)
{
var emailAddressParameter = emailAddress != null ?
new ObjectParameter("emailAddress", emailAddress) :
new ObjectParameter("emailAddress", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<string>("g_GetPWFromEmail", emailAddressParameter, encrPass);
}
而當我把它稱爲它的錯誤出...不知道如何調用此 - 這是我到目前爲止:
//Pull Current Encrypted Password from DB
string DbPw = "";
ObjectParameter DBPW1 = null;
var DbPassWord = databaseManager.g_GetPWFromEmail(model.Username, DBPW1).ToList();
if (DbPassWord != null && DbPassWord.Count() > 0)
{
DbPw = Convert.ToString(DBPW1);
}
我該如何調用此函數返回我的從數據庫中散列pw?我知道有一個更好的方法,但已經嘗試了幾種方法,並且不能很好地理解語法。
該存儲過程的要點是什麼?你是否試圖檢查哈希是否與數據庫中的內容匹配(因爲這是你應該做的)? – DavidG
許多事情可以改進......你的方法'g_GetPWFromEmail()'返回一個字符串,所以不需要將它轉換爲字符串,它是一個字符串......它以小寫字母開頭,並有一個下劃線針對[Microsoft命名約定](https://msdn.microsoft.com/en-us/library/ms229045(v = vs.110).aspx))。而不是'〜= null && Count()> 0',你應該使用'string.IsNullorWhiteSpace()'。你執行這些程序的方式非常古老,請閱讀[Execute SP](http://www.entityframeworktutorial.net/EntityFramework4.3/execute-stored-procedure-using-dbcontext.aspx)。 –
確實 - 是的 - 我試圖檢查哈希是否與數據庫中的內容匹配(因爲這是你應該做的)。我只是不能讓這個代碼工作!任何想法都會被理解。如果您查看鏈接的網站,您將看到幫助程序文件。 –