2009-08-21 73 views
1

我建立了一個IDataContext,當我爲一個實體創建一個數據類時,我從IDataContext繼承它。如何在Ado.net實體框架中使用SaveChanges()方法?

IDataContext接口有4種方法。

IQueryable<T> GetAll(); 
T GetById(long id); 
void Add(T entity); 
void Delete(T entity); 
void Save(T entity); 

正如你所知,Delete和Save方法有這種結構;

FooEntities db = new FooEntities(); 

db.DeleteObject(Foo entity); 
// or save changes method 
db.SaveChanges(); 

我的意思是這兩種方法可以推廣或東西...

我的問題是如何以及在哪裏使用這兩種方法。

  • 裏面的每一個數據類的一個實體
  • 或使用的另一種方式。
+0

你在說什麼'IDataContext'?它似乎不是EF的標準部分。 – 2009-08-21 00:46:49

回答

1

您可以使用Repository模式抽象出框架的細節。這裏是實體框架的IRepository的example implementation。至於在哪裏調用實際的刪除和保存,您的Controller/Presenter是一個可能的候選人。

+0

非常感謝,我現在要讀它 – 2009-08-21 11:13:47

0

DeleteObject用於從商店中刪除對象。如上所述調用DeleteObject時,將標記爲刪除對象。對SaveChanges()的調用實際上將該更改提交給數據庫。兩者都需要從商店中刪除一個對象。

+0

謝謝你的回答,但這不是我所要求的。 請看看艾丹的答案 – 2009-08-21 11:14:43

+0

對不起,誤解了你的問題。 Aidan是對的,Repository模式是包裝和整合EF的好方法。這是另一篇很好的文章:http://www.codeproject.com/KB/database/ImplRepositoryPatternEF.aspx – 2009-08-21 14:29:31