我在新的互聯網網絡應用程序中採用了EF(.NET 4.5以上版本)。我應該堅持實體框架嗎?
這個應用程序確實涉及到數據庫活動的一些操作,並涉及大約30個或更多的表。
我的觀點是這不是一個簡單的學校項目,EF通常適合大多數需求。
進一步我開發這個應用程序,我發現EF非常有限或禁止進行適當/好分貝的設計(尤其是在性能方面)
1)包括
我遇到包括特徵查詢部分。缺少許多數據是由於缺少包含設置。
我把這個東西放得越多,我越擔心一個簡單的數據檢索就是在某些功能上獲得比我需要的更多的東西。
2)驗證
我採用流利驗證了這方面的需要,因爲我更喜歡訪問者模式,在需要的地方過來的數據代碼本身沒有直接的代碼更改。
但隨着我繼承我越來越挑戰,我需要鍛鍊驗證能夠尊重面向對象的簡單的東西。我管理它,雖然更復雜,我真的不喜歡它的實現某些東西。我相信這個子類驗證問題也發生在DataAnnotation中。
3)交易
現在,我需要把適當的分貝transactaction控制,我發現這個缺乏EF,糾正我,如果我錯了。
我曾經使用過Enterprise組件(.NET中的COM +,很久以前),並且我在EF中找不到合適的(或缺少它)事務實現。
我還在這方面的工作...
結論)
我體會到英孚已經幫助我在我的編碼的唯一的事情,是數據/實體代碼生成,這這是這是許多其他工具/框架的共同特徵。
我在考慮放棄這個EF,切換回pre-EF時代方法,採用存儲過程,仍然是代碼生成的表類(但不是EF或DBML)。
我可以不使用SQL LINQ,因爲在過去的性能問題上我有很多挑戰。
我喜歡你的觀點,我應該留下來堅持EF,無論出於何種原因,我簡單的頭腦可以感知到,除了這個ORM,它幾乎不切實際地工作。
使用EF 6中的事務處理:https://msdn.microsoft.com/en-us/data/dn456843.aspx –