Каков правильный синтаксис для использования Database.ExecuteSqlCommand с параметрами?
Я использую Entity Framework 4.2 и хочу вызвать хранимую процедуру с входными параметрами. Я использую Database.ExecuteSqlCommand
для вызова хранимой процедуры.
Однако для правильного отображения параметров в документации отсутствует правильный синтаксис вызова.
Мой google-foo терпит неудачу, и любая помощь будет оценена.
т.е. У меня есть процедура
procedure SetElementFrequency
@ElementTypeID integer,
@Frequency float
as ...
Я пробовал называть его
Database.ExecuteSqlCommand("exec SetElementFrequency @p0 @p1",
elementType, frequency);
и
Database.ExecuteSqlCommand("exec SetElementFrequency {0} {1}",
elementType, frequency);
но оба они не работают с ошибкой. Неправильный синтаксис рядом с '@p1'.
Ответы
Ответ 1
В зависимости от поставщика базовой базы данных вы можете использовать одно из следующих значений.
Database.ExecuteSqlCommand(
"exec SetElementFrequency {0}, {1}",
elementType, frequency);
или
Database.ExecuteSqlCommand("exec SetElementFrequency ?, ?", elementType, frequency);
Вы также можете указать elementType
и frequency
как объекты DbParameter
, чтобы предоставить свои собственные имена с помощью ParameterName
.
Ответ 2
Попробуйте что-то вроде этого:
context.Database.ExecuteSqlCommand("delete MasterSmsCampaignCertificateInfo where MasterSmsCampaignGuid = @p0 and CertificateId = @p1",
TheCampaignGuid,
certInfo.CertificateId);
Взгляните на этот похожий вопрос:
ExecuteSqlCommand с параметром вывода
С наилучшими пожеланиями
Ответ 3
var sql = @"Update [User] SET FirstName = {0} WHERE Id = {1}";
ctx.Database.ExecuteSqlCommand(sql, firstName, id);