我是新来的实体框架,想知道我想做什么,是可能的。实体框架和抽象类
我有一个名为'Monitor'的类,其中包含'MonitorField'的列表。
每个“MonitorField”有一个名为“AMonitoringTool” **抽象类的List
AMonitoringTool是提供允许其他开发人员创建自己的领域的一种,由继承AMonitoringTool在外部DLL中。
主要问题是应用程序不知道'MonitorField'中的实际类型,防止将我的对象保存在数据库中。
我有一个MonitorEntity与DbSet,但我不能挽救我的监视名单,我得到这个错误信息:
“的抽象类型“{...} AMonitoringTool “没有映射后代,因此不能被映射......”
我首先想到的是要落实在每一个继承DLL映射‘AMonitoringTool’,但我不如何做到这一点。
MonitorEntity.cs
public class MonitorEntity : DbContext
{
public DbSet<Monitor> Monitors { get; set; }
public MonitorEntity()
{
}
}
Monitor.cs
public class Monitor
{
public Monitor(string name)
{
MonitorName = name;
FieldList = new List<MonitorField>();
}
private List<MonitorField> m_fieldList = null;
public virtual List<MonitorField> FieldList
{
get
{
return m_fieldList;
}
set
{
m_fieldList = value;
}
}
}
MonitorField.cs
public class MonitorField
{
public AMonitoringTool Configuration { get; set; }
public MonitorField()
{
FieldName = "<label>";
}
}
那么你需要要保存到数据库的具体类型,可以使上下文采用泛型类型参数。 – DavidG
你可能有更好的运气将这样的动态保存到文档数据库中。您也可以将您的MonitorField项目序列化为字符串。 – CuddleBunny