entity-frameworkentity-framework-4.1

How to pass parameters to the DbContext.Database.ExecuteSqlCommand method?


Let's just suppose I have a valid need for directly executing a sql command in Entity Framework. I am having trouble figuring out how to use parameters in my sql statement. The following example (not my real example) doesn't work.

var firstName = "John";
var id = 12;
var sql = @"Update [User] SET FirstName = @FirstName WHERE Id = @Id";
ctx.Database.ExecuteSqlCommand(sql, firstName, id);

The ExecuteSqlCommand method doesn't allow you to pass in named parameters like in ADO.Net and the documentation for this method doesn't give any examples on how to execute a parameterized query.

How do I specify the parameters correctly?


Solution

  • Turns out that this works.

    var firstName = "John";
    var id = 12;
    var sql = "Update [User] SET FirstName = {0} WHERE Id = {1}";
    ctx.Database.ExecuteSqlCommand(sql, firstName, id);