2011-10-07 79 views
0

我有一個從DbContext繼承的ECMContext類。在ECMContext中,有一個屬性MlaArticles,它是DbSet<MlaArticle>,其中MlaArticleWebObject繼承。我創建了一個接受WebObject類型參數的泛型方法。該方法試圖保存對數據庫的更改,如果沒有,則退出更改。c#類型推導

我的問題 - 因爲我已經有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 
    } 
} 

回答

2

您可以使用Set<T>()操作:

try { db.SaveChanges(); } 
catch 
{ 
    db.Set<T>().Remove(obj); 
} 

+0

沒錯,就是這樣。謝謝馬修 – bflemi3