Я пытаюсь вставить запись с использованием EF6 путем вызова хранимой процедуры и попытки получить результат из хранимой процедуры, которая является новой созданный идентификатор, но продолжать работать в кирпичных стенах.Как выполнить хранимую процедуру и получить вывод из хранимой процедуры с использованием Entity Framework
У меня есть хранимая процедура, которая имеет выход ContactID
CREATE PROCEDURE [dbo].[usp_InsertContact]
@ContactID int output,
@Name nvarchar(50)
AS
insert into [Contact]
(Name) values (@Name)
set @ContactID = @@IDENTITY
Я звоню хранимую процедуру и передавая значения, как это ...
return Convert.ToInt32(AWJE.Database.SqlQuery<int>
("usp_InsertContact @Name", contact.Name));
Это не сработало Я получил следующую ошибку ... (и я опубликовал это раньше и сам ответил, и это не сработало).
System.Data.Entity.Infrastructure.DbRawSqlQuery`1 [System.Int32] 'типового' System.IConvertible Ошибки
Тогда я пошел и попытался это ...
return AWJE.Database.ExecuteSqlCommand
("exec usp_InsertContact @Name", contact.Name);
Когда это вызывается я получаю следующее сообщение об ошибке ...
Дополнительная информация: Необходимо объявить скалярную переменную «@name ».
Как вы можете видеть, переменная @Name находится в хранимой процедуре и что я передаю переменную @Name.
Итак, я попытался это
return AWJE.Database.ExecuteSqlCommand
("exec usp_InsertContact @ContactID OUTPUT, @Name", contact.Name);
И что дает эту ошибку ...
Дополнительная информация: Необходимо объявить скалярную переменную "@ContactID".
Так что я как бы потерялся с тем, как это сделать, я знаю, как это сделать, используя ADO.NET. Я искал ответ для этого, но не понял примеры, которые я видел, потому что примеры, которые я видел, смешиваются с SqlParameter.Add и т. Д.
'this.Database.SqlQuery ("storedProcedureName", Params);' –
wiretext