У меня есть хранимая процедура, которая возвращает 0
или 1
в зависимости от того, существует ли или нет указанный адрес электронной почты в моей базе данных:Не удается получить хранятся результаты процедуры с Entity Framework 6
CREATE PROCEDURE [DatabaseSchema].[EmailAddressIsDuplicate] (@emailAddress nvarchar(255))
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS(
SELECT *
FROM [DatabaseSchema].[EmailUpdatesRegistrant]
WHERE EmailAddress = @emailAddress
)
RETURN 1
ELSE
RETURN 0
RETURN 0
END
GO
И я m пытается получить результаты этой хранимой процедуры из контекста базы данных Entity Framework 6:
using (DatabaseContext dbContext = new DatabaseContext())
{
ObjectParameter param = new ObjectParameter("emailAddress", typeof(bool));
var result = dbContext.EmailAddressIsDuplicate(emailAddress);
}
У меня появляется много ошибок.
Ошибка №1: Используя приведенный выше код, var result
всегда установлен на -1.
Ошибка № 2: Я пытался перемещаться в Edit Function Import
и установить Returns a Collection Of
к Boolean
скаляр. Это выдает следующее сообщение об ошибке:
The data reader returned by the store data provider does not have enough columns for the query requested.
Ошибка # 3: Я вернулся и установить Edit Function Import
возвращаемое значение None
. Затем я попытался следующий код из этого ответа:
using (DatabaseContext dbContext = new DatabaseContext())
{
var p = new SqlParameter("@emailAddress", emailAddress);
var result = dbContext.Database.SqlQuery<bool>("DatabaseSchema.EmailAddressIsDuplicate", p);
}
Нет немедленных ошибок, возникающих, но я понятие не имею, могу ли я вывожу полезные данные из var result
. Попытка бросить result
к bool
бросками следующее сообщение об ошибке:
Cannot convert type 'System.Data.Entity.Infrastructure.DbRawSqlQuery' to 'bool'
Любые идеи о том, как я могу видеть результаты этой хранимой процедуры (0
или 1
)?
что возвращаемый тип EmailAddressIsDuplicate (EMAILADDRESS); в настоящее время? – DaniDev