c#型推理
我有一个从DbContext继承的ECMContext类。在ECMContext中有一个属性c#型推理,c#,type-inference,C#,Type Inference,我有一个从DbContext继承的ECMContext类。在ECMContext中有一个属性MlaArticles,它是DbSet,其中MlaArticle继承自WebObject。我创建了一个接受WebObject类型参数的泛型方法。该方法尝试保存对数据库的更改,如果不保存,则会撤消更改 我的问题-既然我已经有了db(已经实例化),并且我知道正在传递的WebObject的类型(MlaArticle,在本例中),有没有一种方法可以引用DbSet集合db.MlaArticles,而不传递额外的参数
MlaArticles
,它是DbSet
,其中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
}
}
受保护的ECMContext数据库;
void SaveChanges(T obj),其中T:WebObject
{
请尝试{db.SaveChanges();}
抓住
{
db.MlaArticles.Remove(obj);//这是原始代码
db.DbSet.Remove(obj);//像这样的事情是我想做的
}
}
您可以使用Set()
操作:
try { db.SaveChanges(); }
catch
{
db.Set<T>().Remove(obj);
}
试试{db.SaveChanges();}
抓住
{
db.Set().Remove(obj);
}
是的,就是这样。谢谢你,马修