как обсуждалось выше, это TPC ( Таблица для конкретного типа ), ответ / обходной путь заключается в том, чтобы извлечь атрибут ForeignKeyAttribute из базы
class User{}
abstract class AuditObjectBase{ // was FruitBase
// [ForeignKey("CreateById")]
public abstract User CreateBy{ get; set; } // made abstract
public int CreateById{ get; set; } // both get and set required public
}
class ItemOne : AuditObjectBase{ // Was Banana
// added
[ForeignKey("CreateById")]
public override User CreateBy{ get; set; }
}
class ItemTwo : AuditObjectBase{ // Added
[ForeignKey("CreateById")]
public override User CreateBy{ get; set; }
}
class DataContext : DbContext{
DbSet<ItemOne> ItemOnes{ get; set; }
DbSet<ItemTwo> ItemTwos{ get; set; }
}
Не полностью СУХОЙно, по крайней мере, когда вы создаете объект, который использует AuditObjectBase, он заставит вас реализовать свойство Foreign Key, некоторые приятные комментарии, чтобы напомнить вам об атрибуте, и вы сразу же уйдете
По сути, он выглядит, атрибуты должны быть добавленыдля класса, объявленного в DbContext как Entity, в этом случае имеет свойство DbSet.