我最近一直在玩ADO.NET實體框架,我發現它適合我正在開發的項目的需求。我也發現其非侵入性很酷。

從現有數據庫生成數據模型後,您將面臨集成生成的模型和業務邏輯的任務。更具體地說,我習慣於集成測試我的類,這些類通過DAL接口的模擬/存根與數據存儲交互。問題是您無法使用ADO.NET實體框架執行此操作,因為它生成的實體是沒有接口的簡單類。

問題是:如何將TDD方法應用於使用ADO.NET Entity Framework的應用程序的開發?這是可能的,還是應該遷移到另一個DAL生成工具集?

一般承認的答案

對實體框架的一個重要批評是,它本身很難測試,例如在gef引用的ALT.Net “不信任投票”中

這是一篇博客文章,討論如何解決這個問題,並能夠在使用Entity Framework時測試代碼而無需訪問數據庫。

如果可測試性是一個大問題,您可能希望查看另一個ORM框架,例如NHibernate,至少在Entity Framework 2.0發布之前。


熱門答案

雖然原來的問題已經回答了,但我覺得我可能會添加一些內容:

我目前正在我正在構建的Intranet站點上使用Entity Framework 4.0。我可以使用已添加的POCO支持在沒有數據庫連接的情況下測試業務邏輯和控制器中的所有內容。

雖然POCO可以從VS 2010中包含的新t4模板生成,但我在VS 2010中找不到的東西是用於生成對像上下文的t4模板(對像上下文基本上用作內置單元) EF的工作,對於將EF對象映射到POCO至關重要。幸運的是Joachim Lykke Andersen在他的博客文章Entity Framework 4.0 Beta 1中 - POCO,ObjectSet,Repository和UnitOfWork編寫了一個用於生成它的t4模板,它非常有用。如果你使用可以在沒有數據庫連接的情況下測試的EF4來尋求解決方案,我強烈建議實現與他的解決方案類似的東西,包括通用存儲庫,工作包裝單元和工作單元。這非常有幫助。

祝你好運。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因