有架构问题。我试图将逻辑层分成物理层并遇到一些麻烦。这是我想要设置的方式:
我的问题是在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
但是为了在我的实体上调用Add,我需要对EntityFramework.dll的引用,因为我的上下文继承自DbContext。我没有看到如何在不创建存储库的情况下避免这种情况,这似乎是一个不必要的额外抽象层,而且我认为我不需要使用DbContext。
我在这里缺少什么?
答案 0 :(得分:1)
您的DAL可以为您的上下文定义由派生上下文和工厂实现的接口。 BLL将仅使用界面和工厂。
答案 1 :(得分:1)
如果你坚持这个话题,你应该看看CodePlex上提供的N层实体框架:http://ntieref.codeplex.com/