Я пытаюсь солить свои пароли.Ошибка при вызове процедуры Entity Framework с параметром вывода
Вот мой sproc, который возвращает мой 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
Вот что scaffolded в файле 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). –
Точно - Да - я пытаюсь проверить, соответствует ли хэш тем, что находится в базе данных (так как это то, что вы должны делать). Я просто не могу заставить этот код работать! Любые мысли будут восприняты. Если вы посмотрите на связанный сайт, вы увидите вспомогательный файл. –