存在架构问题。我试图将逻辑层分成物理层,并且遇到一些麻烦。这里是我想要的东西设置的方式:实体框架和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。 –