0

私は最近、EF5 コードを最初に使用してデータベースの内容を変更する単純な ASP.NET MVC 4 アプリケーションを作成する方法をよく示しているこのチュートリアルに従いました。2 つの質問があります。

  1. 完成したソリューションには、エンティティのマッピングまたはドメイン クラスはありません。EF はモデル クラスを効果的に使用してこれらを自動的に生成していますか? もしそうなら、このアプローチに不利な点はありますか?
  2. nHibernate を使用して同様のことを達成することは可能ですか? つまり、DBスキーマなどを生成するためのモデルとしてビューに渡される同じクラスを使用することは可能ですか/推奨されますか? もしそうなら、どうすればこれを行うことができますか?
4

1 に答える 1

0

このチュートリアルは、MVC4 と EF5 を使用して作業を完了する最速の方法を提供することを目的としていることを覚えておいてください。その場合、EF は規約を使用します。DB を作成し、テーブル間の関係を設定し、主キーを設定します...そして、それがマッピング クラスがまったくない理由です。
このチュートリアルでは、EF エンティティがドメイン クラスおよびビュー モデルとして使用されます。SRPSOCの原則を尊重するのは明らかに最善の方法ではありません。しかし、時には、それはあなたのニーズに合うかもしれません!

KISSの原則を念頭に置き、そのためにアプリケーションに多くの抽象化やレイヤーを配置しないようにすることが常に最善の方法です。アプリケーションがこのように OK であれば、それで問題ありません。また、さまざまなレイヤーに物事を分離する必要がある場合、あらゆるビジネス ニーズに対して、リファクタリングが役に立ちます。

EF では、エンティティを DB オブジェクトにマップする方法として、AnnotationsFluent APIという 2 つの方法が用意されています。クライアントの検証を有効にするために属性が MVC と共有されるため、注釈は優れていますが、いくつかの制限があります。そこで Fluent API が役立ちます。

最後に私がお勧めするのは、シンプルに保つことです。大規模なアプリケーションでは、別のビュー モデルを作成し、モデル ビルダー レイヤーでビジネス サービスによって返されるドメイン エンティティにマップする方が簡単な場合があります。しかし、頻繁に変更されることが想定されていない小さなアプリケーションでは、チュートリアルのように、ビュー モデルとドメインの両方に同じエンティティを使用しないのはなぜでしょうか?

これは、私が作成した最近の EF トレーニングへのリンクです。さらに先に進むための役立つ情報が見つかるかもしれません。

于 2013-10-10T16:25:19.037 に答える