Я новичок в Entity Framework и хотел бы знать, возможно ли, что я хочу сделать.Entity Framework и абстрактный класс
У меня есть класс с именем 'Monitor', который содержит список 'MonitorField'.
Каждый «MonitorField» есть список абстрактного класса под названием «AMonitoringTool» **
AMonitoringTool является обеспечить, чтобы позволить другому разработчику создать свой собственный вид поля, унаследовав от AMonitoringTool во внешней DLL.
Основная проблема заключается в том, что приложение не знает реального типа в 'MonitorField', что предотвращает сохранение моих объектов в базе данных.
У меня есть MonitorEntity с DbSet, но я не могу сохранить свой список Monitor, я получаю сообщение об ошибке:.
«абстрактного типа«{...} 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