存在架構問題。我試圖將邏輯層分成物理層,並且遇到一些麻煩。這裏是我想要的東西設置的方式:實體框架和N層
- 實體 - 一個DLL。我的POCO課程。沒有任何傾向。
- DAL - 一個DLL。包含模型和DbContext。依賴於實體。
- BLL - 一個DLL。包含CRUD功能。依賴於DAL和實體
- 用戶界面 - 一個網站項目。對BLL說話。
我的問題是,在BLL,我做這樣的事情:
''' <summary>
''' The repository
''' </summary>
''' <remarks></remarks>
Private context As MyContext
''' <summary>
''' Instantiate the business layer
''' </summary>
''' <remarks></remarks>
Public Sub New()
context = New MyContext()
End Sub
''' <summary>
''' Insert a general retrieve into the database
''' </summary>
''' <param name="myEntity">The entity to insert</param>
''' <returns>The id of the entity added</returns>
''' <remarks></remarks>
Public Function Create(ByVal myEntity As myEntity) As String
Try
context.myEntity.Add(myEntity)
context.SaveChanges()
Catch ex As Exception
Throw ex
End Try
Return myEntity.id
End Function
但爲了呼籲加入我的實體,我需要的EntityFramework.dll參考,因爲我的背景下,從繼承的DbContext 。我沒有看到如何避免這種情況,而無需創建一個存儲庫,這看起來像是一個不必要的額外抽象層,再加上我認爲我不需要使用DbContext。
我在這裏錯過了什麼?
對不起,我需要更詳細一點。我不確定我是否理解你所引用的所有概念。 –
因此,如果我的上下文被稱爲myDbContext,它從DbContext繼承,我應該有一個ImyDbContext,並且實際上下文繼承自DbContext並實現ImyDbContext。我必須在早上嘗試並實施這一點。 –
我被困在這裏。我創建了一個接口,但接口依然依賴於IDbSet,這需要業務層中的EntityFramework DLL。 –