Я учу себя основам Entity Framework.На самом деле я относительно новичок во всем мире .net.
У меня есть классы, подобные приведенным ниже (извинения за псевдокод, фактический код слишком длинный для вставки).
Account
{
User UserInfo {get;set;}
}
User
{
string Email {get;set;}
}
Admin:Account
{
// some properties
}
Я пытаюсь сгенерировать таблицы БД, используя EFкод первый шаблон.С вышеперечисленными классами у меня есть начальная подпрограмма, которая выглядит следующим образом:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Account>().HasData(
new Admin
{
UserInfo = new User {Email = "abc@xyz.com"}
});
}
С вышеприведенным, когда я пытаюсь создать начальную миграцию, я получаю следующую ошибку:
Начальный объект для типа объекта «Учетная запись» не может быть добавлен, поскольку предоставленное значение имеет производный тип «Администратор».Добавьте производные начальные сущности в соответствующий тип сущности.
Итак, я изменил код, как показано ниже (заменив Account на Admin):
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Admin>().HasData(
new Admin
{
UserInfo = new User {Email = "abc@xyz.com"}
});
}
И теперь я получаюэта ошибка (не знаю, откуда исходит UserInfoEmail
):
Невозможно добавить начальный объект для типа объекта «Администратор», поскольку для него установлена навигация «Пользовательская информация».Чтобы заполнить отношения, вам нужно добавить семя связанной сущности в 'User' и указать значения внешнего ключа {'UserInfoEmail'}.Подумайте об использовании DbContextOptionsBuilder.EnableSensitiveDataLogging, чтобы увидеть значения соответствующих свойств.
Я не понимаю, какова вся эта концепция обработки отношений при использовании шаблона первого кода.Может кто-нибудь, пожалуйста, помогите мне понять, что означают вышеуказанные ошибки, и как обрабатывать отношения (например, состав и наследование) при использовании первого шаблона кода EF.