我一直在閱讀有關StackOverflow和其他網站上關於最佳體系結構實踐的文章,並且存在許多相互矛盾的想法和觀點。如果Entity Framework/DbContext是DAL/Repository,它在三層體系結構中適合哪裏?
我終於找到了一種方法,但我很難決定在哪裏放置EF對象(DbContext,Fluent APIs,種子數據等)。這裏是我目前有:
ASP.NET MVC項目:實際的Web項目。包含標準視圖,控制器和視圖模型(位於型號文件夾內)。
域模型項目:包含定義數據庫(域)對象的所有POCO類。目前,沒有提及或引用任何EF對象。
服務層項目:包含每種類型的域對象(例如,IProductService,IOrderService等)的服務對象。每個服務引用EF對象(如DbSets)並處理業務規則 - 例如,添加產品,獲取產品,將產品附加到訂單等。
所以問題是,在這種配置中,EF類在哪裏?最初我在服務層思考過,但這似乎沒有道理。然後我想把它們放在域模型層中,然後它將域模型綁定到EF上,EF本質上是一個DAL/Repository。最後,我想爲EF創建一個單獨的DAL項目,但考慮到它可能包含3-4個文件(DbContext和其他一些小文件),似乎是一個巨大的浪費。
任何人都可以提供任何指導?
什麼推動你創建三個項目,而不是一個? –
更好的可擴展性。通過一個單獨的域模型項目和一個服務項目,您可以擁有另一個應用程序(例如,一個WinForms應用程序),該應用程序可以輕鬆使用域和業務邏輯,而無需複製代碼。另外,如果有WinForms應用程序和MVC應用程序,則只需在一個地方而不是兩個地方進行業務規則更改等操作。 – Amberite