0

ドメイン レイヤーと GUI を分離しようとして、それを行うためのさまざまな方法を検討する中で、私が常に尋ねていることの 1 つは、なぜこれがそれほど難しいのかということです。なぜデータ オブジェクトのすべての余分なコードと、値をコピーするプロパティのすべての余分なマッピングなどがあるのでしょうか。もっと簡単な方法はないのでしょうか?

次に、MS Access を使用して小さな小さな db アプリを作成していたときのことを思い出しました。Access にはダイナセットの概念があり、基本的にダイナセットはビューであり、更新可能なビューであることを除いて、SQL Server ビューと同じです。したがって、MS Access フォームはビュー/ダイナセットに基づいているため、関係するすべての個々のテーブルの詳細を知る必要はありません。私には Data オブジェクトのパターンのように聞こえます。Access には 20 年間これがありましたが、エンティティ フレームワーク用の同様のダイナセット、ビュー、マッピング ツール、つまりプレゼンテーションからエンティティを抽象化するツールが存在するのではないでしょうか? 私が知らないものはありますか?サードパーティ?

これについての考えは?

4

2 に答える 2

0

私があなたを正しく理解していれば、POCO エンティティを含む Entity Framework を探している可能性があります。それらのテンプレートは、テンプレートのオンライン ギャラリーにあります (プロジェクトに新しいアイテムを追加する場合)。または、.edmx デザイン ビューで右クリックし、[コード生成項目の追加] を選択して、Fluent Generator を選択することもできます。

これらのメソッドは、既定のオールインワン EF 生成ファイルではなく、複数のファイルを作成します。そのようなファイルの 1 つは DbContext (ObjectContext とは対照的に) であり、1 つにはエンティティのみが含まれ (通常の C# オブジェクトの形式で、属性も何もなく、単なるオブジェクトのみ)、最後のファイルには流暢なルールの形式で生成されたマッピングが含まれます。

このフェーズでは、エンティティ ファイルをそのテンプレートから切り離し、別のアセンブリに移動できます。そしてほら、EF インフラストラクチャに依存しないエンティティがあります。以前と同じようにこれらのエンティティのコンテキストを渡すだけで、それ自体でマッピングが行われます。

または、 AutoMapperなどのツールを使用することもできますが、手動でマッピングを提供する必要があります。これは大変な作業ですが、場合によっては良いかもしれません。

于 2013-02-18T18:23:41.190 に答える
0

良いデザインには努力が必要です。それが簡単なら、誰もが自動的に行うでしょう。結局のところ、誰もが可能な限り最小限の作業を行いたいと考えています。

あなたが不平を言っていることはすべて、優れた設計プロセスの一部であり、優れた設計が必要な場合、それらを回避することはできません.

近道をしたい場合は、必ずスキップしてください。それはあなたのコードです。特定の方法で物事を行う必要はありません。

Access は Web アプリケーションではなくデスクトップ アプリケーションであるため、さまざまなことができます。Web アプリケーションは、設計方法、動作方法、および直面する問題において、デスクトップ アプリケーションとは根本的に異なります。たとえば、ステートレスな環境があり、要求ごとに結果セットを保持できないという事実は、人々が Access で当然と思っていることの多くを Web アプリでは実行できないようにします。

特に、ビューを使用したい場合は、そうすることができます。ビューは適切に設計されていれば更新可能ですが、通常はビュー内の 1 つのテーブルにのみ影響する更新ステートメントが必要です)。EF はビューでも動作しますが、対処しなければならない多くの癖があります。

データ マッパー パターンは、レイヤーや層の間で問題を明確に分離するための最も簡単で簡単な方法であるため、Web デザインの一般的なパターンとして登場しました。開発プロセス内でそれらを機能させる方法を見つけることをお勧めします。

また、MVC が使用するのに最適なフレームワークではない可能性もあります。Access で行った方法で Web アプリを構築したいとお考えのように思えます。その場合は、Visual Studio Lightswitch の方が適しているかもしれません。

http://msdn.microsoft.com/en-us/library/ff851953.aspx

于 2013-02-18T18:24:03.767 に答える