0

非常に汎用的なデータベースを持つエンタープライズアプリケーションに関するものです(すべてのオブジェクトはデータベース内のデータを使用して識別され、国際化/グローバル化/ローカライズされています)。 DBアクセス(LINQ2SQL又はEF)のための別のモデル以降としてリポジトリモデルデータアクセス層を使用する:ASP.NET MVC - モデル決定:どのように設計するのですか?

  • リポジトリパターンのモデルを作成し、次に作る(1 1生成)?
  • L2S/EF/NHibernateモデルを直接使用し、モデルをDBにマッピングし、永続性レイヤーを開きますか?

デュアルモデル環境でL2S/EFモデルを直接使用する場合、このデュアルモデルアイデア(リポジトリパターン)ポップアップで動的スタッカブルLINQ検索クエリを作成できますか?

お知らせください。

答えて

0

リポジトリ内のIQueryableオブジェクトを公開している限り、推奨する方法で問合せを積み重ねても問題はありません。

遅延読み込みが期待通りにサポートされていないため、Entity Frameworkを使用する場合は注意が必要です。 Linq to SQLは問題なく遅延ロードを処理します。

Entity Frameworkの中に遅延読み込みの詳細については、以下を参照してください。http://www.singingeels.com/Articles/Entity_Framework_and_Lazy_Loading.aspx

+0

私はEFの利点と欠点を認識しています。私はそれを研究し、記事を書いています。私は、EFがビジネスロジックのための実用的なモデルになるソリューションのように、EFについて言及しています。 – BuzzBubba

+0

私の意見では、EFには組み込みのフックがないかぎり、ビジネスロジック用の別のレイヤーを作成する必要があります。 –

+0

したがって、私はすべてのビジネスオブジェクトのモデルをモデルファーストアプローチで作成し、次にEFデザイナーを使って新しいモデルを生成し、ビジネスモデルのクラスの2つのトラフメソッドをリンクする必要があると思いますか? - "Account"を返すGetAccount(int id)メソッドを持つが、内部的に "Account"クラスと "EFAccount"(EF生成エンティティマッチングテーブル "TAccount"生成された "EFAccount"を生成し、LINQクエリを使用してプロパティの一部を取得しますか? - (私は十分にここに明確だ願っています) – BuzzBubba

0


sharp architectureを見てみましょう。

あなたのリポジトリオブジェクトからIQueryableを返すことに関しては、私の意見では、このようにするとアプリケーションで問題が適切に分離されることになります。私はすべてあなたのデータアクセス層でIQueryableを使って作業していますが、IQueryableとしてオブジェクトを返すと、コントローラやビューがデータアクセスに干渉する機会が与えられます。このようなことは、アプリケーションのテスト容易性にも悪影響を与える可能性があります。

+0

私は懸念を理解しています。 – BuzzBubba

関連する問題