0

MVC3 Webアプリケーションと、Entity Frameworkファイルを含むデータプロジェクトを含むソリューションがあります。エンティティフレームワークが動作していますが、ビューに渡すためにEntity Frameworkエンティティアイテムオブジェクトをビューモデルの1つに含めると、次のエラーが発生します。ASP.NET MVC3とEntity Frameworkを使用してプロジェクトレイヤを分離するためのベストプラクティス

タイプ 'System.Data。 Objects.DataClasses.EntityObject 'は、参照されていないアセンブリで定義されています。アセンブリ 'System.Data.Entity、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = b77a5c561934e089'への参照を追加する必要があります。

私はそのアセンブリへの参照を追加しようとしましたが、プロジェクトにusingステートメントを含めようとしましたが、何もしていないようです。しかし、この問題を抱えていることで、Entity Frameworkエンティティアイテムをビューモデルでまったく使用しようとするのは良い考えではないのですか? ASP.NET MVC3とEntity Frameworkを使用する際のベストプラクティスによれば、プレゼンテーションレイヤー、ビジネスレイヤー、データレイヤーで何が起きるべきかを決定する最善のルールは何ですか?

私は、これは...助けを

おかげ関与質問です知っています。

+0

このアプリケーションでどのようなエラーが発生しますか? –

+0

あなたはTom Dykstraの優れたEF/MVCチュートリアルを通過する必要があります。 http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/creating-anentity-framework-data-model-for-an-asp-net-mvc-application – RickAndMSFT

答えて

6

これは物事の私の意見です...

まず、あなたのViewModelsは、それらに複雑なタイプを含むべきではありません。複雑であり、Entity Frameworkのものなどである。それらは常にとなります。ライトです。ビューには、永続性やデータベースなどの知識は必要ありません。すべてのビューが知る必要があるのは、どのデータをレンダリングすべきかということです。シンプル。

のでViewModelsはPOCOさんでなければなりません - >stringsints、基本custom objectsstrongly typed collections

コントローラでは、複雑なタイプを表示モデルに変換する必要があります。これにはAutoMapperを使用することをお勧めします。

Here is a sample tutorial websiteどのようにしてthe ControllerがViewModel ..とViewModel is really simpleに情報を渡すかを示しています。

0

ドメインオブジェクトがEntityObjectから継承されているため、このエラーは発生しているので、永続性を知らないわけではありません。 Entity Frameworkライブラリに依存しないようにするには、まずPOCO生成テンプレートまたはEFコードを使用する必要があります。

個人的に私はあなたの「プレゼンテーション」レイヤーであなたのドメインオブジェクトを扱うだけで大丈夫だと思っています。もしあなたが巨大でスーパーメンテナンス可能なものを作り上げていないのであれば、Automapperなどでドメインモデルを完全に分けてください。 。

関連する問題