3

次のレイヤーを持つ WPF アプリケーションを作成しています。

UI (ビュー + ビューモデル) -> BLL -> DAL

これらはすべてドメイン モデル レイヤーを参照します。

現時点では、BLL を介して UI から DAL にすべての DB 呼び出しを伝えています。しかし、これが正しい方法かどうかはわかりません。

BLL のほとんどのメソッドは次のようになります。

public ICollection<User> GetUsers()
{
    return dbAccess.GetUsers();
}

次に、DAL で同様のメソッドを呼び出します。

public ICollection<User> GetUsers()
{
    using (var context = new DbContext())
    {
        return context.Users.ToList();
    }
}

1) BLL から DAL への呼び出しを伝達するこの方法は、かなり冗長に思えます。もちろん、実際に少しのビジネス ロジックを保持する BLL メソッドがいくつかあります。BLLを捨てるべきですか?

2) このアプローチのもう 1 つの問題は、DbContext が作成され、DAL で破棄されるため、遅延読み込みを使用できないことです。これは ViewModel で DbContext を作成することで解決できると思いますが、いつ破棄する必要がありますか?

3) 最後に、遅延読み込みを使用していないため、関連するエンティティを熱心に読み込む必要があります。しかし、すべてのビューが同じ関連エンティティを必要とするわけではないため、同じエンティティを返すがインクルードが異なる複数のメソッドが必要になることがよくあります。これでいいの?

X) すべての DB メソッドは、DbAccess と呼ばれる 1 つの大規模なクラスに存在します。ViewModel ごとに (またはエンティティごとに) DB サービス クラスを作成したほうがよいでしょうか?

4

1 に答える 1