1

アーキテクチャに問題があります。論理層を物理層に分割しようとしていますが、少し問題があります。これが私が物事をセットアップしたい方法です:

  • エンティティ-DLL。私のPOCOクラス。依存関係はありません。
  • DAL-DLL。モデルとDbContextが含まれています。エンティティに依存します。
  • BLL-DLL。CRUD関数が含まれています。DALとエンティティに依存します
  • UI-Webサイトプロジェクト。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

しかし、エンティティでAddを呼び出すには、コンテキストがDbContextを継承しているため、EntityFramework.dllへの参照が必要です。リポジトリを作成せずにこれを回避する方法がわかりません。これは、抽象化の不要な追加レイヤーのように見えます。さらに、DbContextではtiは必要ないと思いました。

ここで何が欠けていますか?

4

2 に答える 2

1

このトピックに行き詰まっている場合は、CodePlex で入手できる N-Tier Entity Framework を参照してください: http://ntieref.codeplex.com/

于 2013-07-04T19:45:19.510 に答える
1

DAL は、派生コンテキストによって実装されるインターフェイスと、コンテキストのファクトリを定義できます。BLL はインターフェイスとファクトリのみを使用します。

于 2013-01-02T22:56:05.830 に答える