我有一个继承自DbContext的ECMContext类。在ECMContext中,有一个MlaArticles
属性DbSet<MlaArticle>
,其中MlaArticle
继承自WebObject
。我创建了一个接受WebObject类型参数的泛型方法。该方法尝试将更改保存到数据库,如果没有,则退出更改。
我的问题 - 因为我已经有db(已经实例化了)并且我知道正在传递的WebObject
的类型(在此示例中为MlaArticle
),有没有办法引用DbSet集合db.MlaArticles
没有传递额外的参数?我知道这是错的,但这体现了我的问题......
protected ECMContext db;
void SaveChanges<T>(T obj) where T : WebObject
{
try { db.SaveChanges(); }
catch
{
db.MlaArticles.Remove(obj); //this is the original code
db.DbSet<T>.Remove(obj); //something like this is what I'd like to do
}
}
答案 0 :(得分:2)
您可以使用Set<T>()
操作:
try { db.SaveChanges(); }
catch
{
db.Set<T>().Remove(obj);
}