В моем приложении есть объект под названием Person. Есть два типа пользователей, Студент и Профессор, которые наследуются от Person.
У каждого человека есть свойство настроек:
public abstract class Person
{
public Guid UserId { get; set; }
public string Name { get; set; }
public PersonSettings Settings { get; set; }
}
public class Student : Person
{
}
public class Professor : Person
{
}
Мой класс PersonSettings - это всего лишь пара свойств. Это не объект, который нужно хранить в базе данных, поэтому я пометил его как принадлежащий:
[Owned]
public class PersonSettings
{
public bool NotificationsEnabled { get; set; }
public int GymPassId { get; set; }
}
Они хранятся в базе данных как json, которые я использую значения преобразования EF Core в моей конфигурации сущности Person для ее сериализации и десериализации:
builder.Property(p => p.Settings).HasConversion(
s => JsonConvert.SerializeObject(s, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }),
s => JsonConvert.DeserializeObject<PersonSettings>(s, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }));
Но когда я пытаюсь запустить свое приложение и выполнить миграцию базы данных, я получаю сообщение об ошибке
На принадлежащий тип сущности «PersonSettings» необходимо ссылаться из другого типа сущности через навигацию. Добавьте навигацию к типу сущности, которая указывает на «PersonSettings».
Что мне здесь делать? Я ничего не нашел в сообщении об ошибке. Не уверен, связано ли это с тем, что Person является абстрактным классом.