1

と という名前の 2 つのクラスがTextありImage、どちらも抽象クラス から継承していItemます。これを.edmxファイルにマッピングし、そこからデータベースを生成しました。

Text現在、データベースからまたはを取得しようとするたびImageに、次の例外に直面しています。

There are no EntitySets defined for the specified entity type 'ModelLibrary.Text'.
If 'ModelLibrary.Text' is a derived type, use the base type instead.
Parameter name: TEntity

クラスは抽象クラスであり、またはクラスItemに関連付けられた情報が含まれていないため、クラスにアクセスしたり保存したりできません。TextImage

データにアクセスしようとするために使用しているコード:

ProjectEntities context = new ProjectEntities(); //this inherits from ObjectContext and was generated by EF

var textRepo = new TextRepository(context);
var lstTexts = textRepo.GetAll();
foreach (var i in lstTexts)
{
    Console.WriteLine(i.textTitle);
}

このtextRepoクラスは、データベースへのアクセスと保存に使用されます。textRepo継承元のクラスのコンストラクターで例外が発生します(DataRepository)

protected DataRepository(ObjectContext context)
{
    Context = context;
    ObjectSet = Context.CreateObjectSet<T>();
}

私はすでに例外についていくつかの調査を行っており、次の質問を見つけました: EF4 - カスタム ObjectContext と継承の質問

質問に対する答えは、実際にはすでに起こるはずのことです (特定のタイプの ObjectSet の作成)。例外を防ぐはずの行で例外が発生したようです。

今、何がうまくいかないのか、何が欠けているのかを知りたいです。継承のために何か特別なことをする必要がありますか? 私は Entity Framework に少し慣れていないので、ここで明らかな間違いを犯していたら申し訳ありません。さらに詳しい情報やコードが必要な場合は、お気軽にお問い合わせください。

編集:例外をより具体的にするために、私はそれをObjectSet = Context.CreateObjectSet<T>();行に入れます。textRepoクラスの基底クラス、つまりクラスのコンストラクターで既に例外を取得しているため、テスト コードに多くを追加することはできませんDataRepository

4

0 に答える 0