我使用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”附近错误语法不正确而失败。
答案 0 :(得分:16)
根据您的基础数据库提供程序,您可以使用以下任一方法。
Database.ExecuteSqlCommand(
"exec SetElementFrequency {0}, {1}",
elementType, frequency);
或
Database.ExecuteSqlCommand("exec SetElementFrequency ?, ?", elementType, frequency);
您还可以将elementType
和frequency
指定为基于DbParameter
的对象,以通过ParameterName
属性提供您自己的名称。
答案 1 :(得分:2)
尝试这样的事情:
context.Database.ExecuteSqlCommand("delete MasterSmsCampaignCertificateInfo where MasterSmsCampaignGuid = @p0 and CertificateId = @p1",
TheCampaignGuid,
certInfo.CertificateId);
看看这个类似的问题: ExecuteSqlCommand with output parameter 最好的问候
答案 2 :(得分:2)
var sql = @"Update [User] SET FirstName = {0} WHERE Id = {1}";
ctx.Database.ExecuteSqlCommand(sql, firstName, id);