У меня есть базовый объект, который я не хочу быть отображены в БД как объект, я только хочу, чтобы свойства, которые будут добавлены к объекту, который отображается в БД:Наследование EF Code-First
Не отображается объект (не знаю, если это имеет значение, но BaseObject в другой сборке):
public class BaseObject
{
public virtual string Prop1 { get; set; }
public virtual string Prop2 { get; set; }
}
отображенный объект:
public class ChildObject : BaseObject
{
public virtual string Prop3 { get; set; }
public virtual string Prop4 { get; set; }
public virtual string Prop5 { get; set; }
}
Что регистрируется в DbContext
public DbSet<ChildObject> ChildObjects { get; set; }
Что я хотел бы видеть в Db
table:ChildObject
col:Prop1 (from BaseObject)
col:Prop2 (from BaseObject)
col:Prop3
col:Prop4
col:Prop5
Чтобы возобновить, что я хочу сделать, это иметь одну таблицу в Дб, которая имеет ребенка и основные свойства.
Это ошибка я в настоящее время получаю:
типа «namespace.ChildObject» не отображается. Убедитесь, что тип не был явно исключен с помощью метода Ignore или Аннотации данных NotMappedAttribute. Убедитесь, что тип был определен как класс, не является примитивным, вложенным или общим и не наследует от EntityObject.
Я копался, но не могу найти, как это сделать.
Любые идеи?
EDIT:
@Kyle Trauberman является правильным, однако, по какой-то причине, как представляется, проблема с наследованием от базового класса в другой сборке. Я просто сделал это.
class BaseObjectClone : BaseObject { } /* BaseObject being in another assembly */
public class ChildObject : BaseObjectClone {
public virtual string Prop3 { get; set; }
public virtual string Prop4 { get; set; }
public virtual string Prop5 { get; set; }
}
Итак, вы не хотите, чтобы свойства, определенные в базовом классе, сопоставлены с базой данных? Или вы хотите, чтобы они отображались? Что вы видите сейчас, а что вы хотите видеть? –
жаль, что это может быть непонятно. Я имел в виду, что я не хочу, чтобы baseobject отображался как другой объект, но я хочу, чтобы свойства отображались в дочернем объекте. –
Я смог решить свой подобный случай с моим ответом [здесь] (https://stackoverflow.com/a/45762308/1718832) – vk5880