1

私は2つのプロジェクトを持っています.1つはデータアクセスを扱い、エンティティフレームワークとPOCOオブジェクトを使用してそれを行います. 2 番目のプロジェクトは、その DAL プロジェクトを参照してデータベースにアクセスします。

私の 2 番目のプロジェクトでは、POCO クラスから継承し、いくつかのプロパティやその他のものにいくつかのデフォルト値を提供する必要があります。最後に、このクラスまたは「その基本クラス」をエンティティ フレームワークのオブジェクト コンテキストに追加します。

しかし、毎回、「EntityType 'MyInheritedClass' のマッピングとメタデータ情報が見つかりませんでした」という例外が発生します。

部分クラスを使用したり、データ アクセス レイヤーを持つプロジェクトを編集したりせずに、これを回避する方法はありますか。

ありがとう

4

1 に答える 1

1

残念だけど違う。EFの現在のバージョンは、マップされていない場合、派生クラスを処理できません。クラスをマップする場合は、データの取得と永続化にそのクラスタイプを使用する必要があります。EFはマップされていない派生型のインスタンスを取得することはなく、EFは型を認識しないため、派生型も受け入れません。

派生クラスを使用する場合は、データアクセスライブラリで直接定義する必要があり、そのクラスはマップされた継承の一部である必要があります(この場合、継承はデータベースに反映されます)。それ以外の場合は、継承されたクラスを使用せず、すべての追加のプロパティとロジックを元のPOCOに直接移動します(これは想定される使用法です)。

于 2012-04-24T10:34:32.390 に答える