在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
答案 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(...);