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);

しかし、どちらも「@p1」の近くの構文が正しくないというエラーで失敗します。

4

3 に答える 3

16

基盤となるデータベースプロバイダーに応じて、次のいずれかを使用できます。

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

また

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

elementTypeまた、プロパティを介して独自の名前を提供するために、ベースオブジェクトfrequencyとして指定することもできます。DbParameterParameterName

于 2012-06-20T17:06:29.743 に答える
2

次のようなものを試してください。

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

この同様の質問を見てください: 出力パラメータを指定したExecuteSqlCommand よろしくお願いします

于 2012-06-20T14:48:04.147 に答える
2
var sql = @"Update [User] SET FirstName = {0} WHERE Id = {1}";
ctx.Database.ExecuteSqlCommand(sql, firstName, id);
于 2012-06-20T14:49:12.987 に答える