Вопрос по entity-framework, sql, sql-server – Каков правильный синтаксис для использования Database.ExecuteSqlCommand с параметрами?

10

Я использую 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);

но они оба терпят неудачу с ошибкойIncorrect syntax near '@p1'.

Error: User Rate Limit Exceeded bricelam
Error: User Rate Limit Exceeded SWeko

Ваш Ответ

3   ответа
2

Error: User Rate Limit Exceeded

context.Database.ExecuteSqlCommand("delete MasterSmsCampaignCertificateInfo where      MasterSmsCampaignGuid = @p0 and CertificateId = @p1",
TheCampaignGuid,
certInfo.CertificateId);

Error: User Rate Limit ExceededError: User Rate Limit ExceededError: User Rate Limit Exceeded

Вы пытались передать их как массив? context.Database.ExecuteSqlCommand (& quot; удалить MasterSmsCampaignCertificateInfo где MasterSmsCampaignGuid = @ p0 и CertificateId = @ p1 & quot ;, новый объект [] {TheCampaignGuid, certInfo.CertificateId});
Это выглядит так ...
Этот синтаксис работает нормально, проблема была в сгенерированном запросе. SWeko
попробовал, не работает SWeko
Значит ли это, что первый параметр установлен в@p0второй@p1, и так далее? SWeko
2
var sql = @"Update [User] SET FirstName = {0} WHERE Id = {1}";
ctx.Database.ExecuteSqlCommand(sql, firstName, id);
Error: User Rate Limit Exceeded SWeko
Error: User Rate Limit Exceededstackoverflow.com/a/5475210/642054
16

Error: User Rate Limit Exceeded

Database.ExecuteSqlCommand(
    "exec SetElementFrequency {0}, {1}",
    elementType, frequency); 

Error: User Rate Limit Exceeded

Database.ExecuteSqlCommand("exec SetElementFrequency ?, ?", elementType, frequency); 

Error: User Rate Limit ExceededelementTypeError: User Rate Limit ExceededfrequencyError: User Rate Limit ExceededDbParameterError: User Rate Limit ExceededParameterNameError: User Rate Limit Exceeded

Похожие вопросы