2010-11-15 57 views
2

我試圖複製EF CTP4中我們使用NHibernate的許多實踐。EF CTP4何時調用context.SaveChanges

目前我們有一個通用的知識庫接口(CTP4實際上使DbContext.Set非常容易)。

我們正在傳遞上下文並使用StructureMap來根據HttpRequest對其進行範圍。

在NHibernate中,我們傳遞了ISession(再次使用StructureMap創建),但使用ActionFilter(UnitOfWork)在請求結束時提交事務。

我們在EF CTP4中有相同的交易嗎?如果不是,我應該使用相同的過濾器來調用context.SaveChanges(),或者只是在存儲庫中執行此操作。

請注意,最簡單的測試方法是查看一個實體是否是新建的。通過NH,我們可以直接調用ISession.SaveOrUpdate。請注意,我所有的實體都使用Guid標識符。也許檢查默認(Guid)?

謝謝。

+0

你知道了嗎? – Chad 2011-01-02 14:22:54

+0

@Chad,我做了類似於下面的帖子。缺點是EF不直接公開交易,因此您失去了對NH的控制權(例如明確回滾交易)。另外,在我的過濾器中使用了System.Transactions,我發現這對於SQLCE是不可能的。 – 2011-06-14 07:46:21

回答

1

我知道這是一個遲到的答案,你現在已經想通了,但我想它對搜索的人很有用。 Rob conery在使用actionfilter和Ef爲每個請求範圍創建事務方面擁有很棒的職位。

Rob C Article

哦,是的,我會創造對測試默認(GUID)的通用倉庫的UpdateInsert()方法。

+0

我們最終做了類似的事情,並調用SaveChanges OnActionExecuted。 – 2011-06-14 07:47:27

+1

僅供參考,鏈接已損壞。 – 2013-08-02 09:56:53