我有两个类,名为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
类,因为它们是抽象类,并且它们从不包含与Text
或Image
类关联的信息。
我用来尝试访问数据的代码:
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 - custom ObjectContext and inherit question
问题的答案实际上是应该发生的事情(为特定类型制作 ObjectSet)。我似乎只是在应该防止异常的行上得到异常。
现在,我想知道可能出了什么问题或我错过了什么。由于继承,我需要做一些额外的事情吗?请注意,我对 Entity Framework 有点陌生,所以如果我在这里犯了一个非常明显的错误,我深表歉意。如果您需要更多信息或代码,请随时询问。
编辑:为了更具体地说明异常,我将其上ObjectSet = Context.CreateObjectSet<T>();
线。我不能在测试代码中添加太多内容,因为我已经在类的基textRepo
类(即类)的构造函数中得到了异常DataRepository
。