Sql ExecuteSqlCommand到LINQ

时间:2015-12-09 18:36:08

标签: sql linq

在LINQ中有一种方法可以转换下面的sql代码吗?

public Category SaveCategory(Category category, string tableName)
{  

     var context = new MyEntities();

     context.Database.ExecuteSqlCommand("INSERT INTO " + tableName + " (title,description) VALUES {0}{1} ", table.title, table.description);

}

我想避免使用像“if”和“switch case”这样的条件,如:

 case "Country": tableName= db.Countries.FirstOrDefault(x => x.id == id);
       break;
case "City": tableName= db.Cities.FirstOrDefault(x => x.id == id);
       break;

...
return tableName

1 个答案:

答案 0 :(得分:1)

如果您可以使用Type代替string,则可以使用Set method of the DbContext

Type tableType = // type representing Country
DbSet mySet = db.Set(tableType);
mySet.Add(whatever);

或者您可以访问Database property,但您的代码可能对SQL注入开放。您应该根据有效表名的白名单验证字符串,或者执行其他操作以消除注入的可能性。

db.Database.ExecuteSqlCommand(...);