簡體   English   中英

使用實體框架在哪里創建上下文的分層體系結構

[英]Layered Architecture using Entity framework where to create the context

我有n層體系結構,有數據訪問,業務服務和UI層。 我正在使用EF 4.0和MVC。 現在的問題是在1. Business Service中的哪里創建上下文,並將上下文傳遞給Dataacess並將IQuerable返回給Data Acess層。 2.在數據訪問層中直接使用上下文,並將業務服務用作代理(基本上是從DataAcecss和UI傳遞信息)。

什么是創建“上下文”的最佳位置。 在線提供的所有示例都顯示了在數據訪問層中創建上下文。

謝謝你的幫助!

同意@Robert Harvey和@djacobson。

DAL應該處理上下文,但有一個例外:

如果您使用的是工作單位模式。

UoW是上下文的包裝,因此,當您“創建新的UoW”時,實際上是在創建新的數據上下文。 由於工作單元處理許多存儲庫,因此無法在DAL本身中實例化它。

UoW(在MVC的上下文中)將傳遞給控制器​​,控制器將傳遞給存儲庫,然后查詢存儲庫。

在這種情況下,您將在應用程序事件(global.asax)開始請求期間更新UoW(並因此更新上下文),並在請求結束時進行處置(最好使用DI容器)。

正如@Robert Harvey所言,這些示例具有正確的想法。 EF Context特定於您的持久性機制(例如SQL Server數據庫),因此屬於數據訪問層。

這種分層的目的是使持久性機制對其上方的層不可見,例如,您可以更改數據庫提供程序而無需更改您的業務/ UI代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM