使用带参数的Database.ExecuteSqlCommand的正确语法是什么?

SWe*_*eko 10 sql sql-server entity-framework

我使用Entity Framework 4.2并希望调用具有输入参数的存储过程.我正在使用Database.ExecuteSqlCommand调用存储过程.

但是,为了正确映射参数,文档缺少正确的调用语法.我的google-foo让我失望,任何帮助都将受到赞赏.

即我有一个程序

procedure SetElementFrequency
  @ElementTypeID integer,
  @Frequency float
as ...
Run Code Online (Sandbox Code Playgroud)

我试过用它来试试

Database.ExecuteSqlCommand("exec SetElementFrequency @p0 @p1", 
                            elementType, frequency);
Run Code Online (Sandbox Code Playgroud)

Database.ExecuteSqlCommand("exec SetElementFrequency {0} {1}", 
                            elementType, frequency);
Run Code Online (Sandbox Code Playgroud)

但他们都失败了错误语法'@ p1'附近的错误语法.

bri*_*lam 16

根据您的基础数据库提供程序,您可以使用以下任一方法.

Database.ExecuteSqlCommand(
    "exec SetElementFrequency {0}, {1}",
    elementType, frequency); 
Run Code Online (Sandbox Code Playgroud)

要么

Database.ExecuteSqlCommand("exec SetElementFrequency ?, ?", elementType, frequency); 
Run Code Online (Sandbox Code Playgroud)

您还可以指定elementTypefrequency作为DbParameter基础对象,以通过ParameterName属性提供您自己的名称.