2014-02-18 83 views
2

我不確定我所要求的是要走的路。我有一個DB第一個模型。我想添加一些常用的方法,比如更新特定表的特定字段。Extend EF DBContext

我知道我可以通過與像適當的方法創建一個類來完成此:

public static class MyClass 
{ 
    public static void UpdateFieldAOfTableA(int newValue) 
    { 
     using(DBContext db = new DBContext()) 
     { 
      //Update Code 
      db.SaveChanges(); 
     } 
    } 
} 

但有延長的DbContext的一種方式,所以我只要致電:

DBContext.UpdateFieldAOfTableA(newValue); 

我試圖創建一個部分類,並添加一個擴展名如:

public partial class DBContext 
{ 
    public static void UpdateFieldAOfTableA(this DBContext db,int newValue) 
    { 
     //Update Code here 
    } 
} 

但這顯然沒有工作,因爲我只能擴展非泛型靜態類,這不是靜態的。

你認爲我想要做的是錯的嗎?你怎麼看?

回答

3

由於DBContext已被聲明爲部分類,因此不需要使用擴展方法。這應該工作:

public partial class DBContext 
{ 
    public void UpdateFieldAOfTableA(int newValue) 
    { 
     //Update Code here 
    } 
} 

你現在應該可以撥打DBContext.UpdateFieldAOfTableA(newValue);

+0

是的,這是正確的。我很困惑如何參考SaveChanges。 this.SaveChanges不起作用。我只需要調用簡單的SaveChanges。 –

+0

感謝您的幫助。 –

+0

nintendojunkie/@GiannisParaskevopoulos,我希望你們其中一個可以幫助我...看到這個答案,並嘗試它,並得到錯誤 - 發佈時間:16年01月08日原作者: -extending -dbcontext-class - 任何想法? –