Я думаю, ты имеешь в виду что-то вроде:
public class PostFile {
public Int32 UserId{ get; set; }
public Int32 PostId { get; set; }
public virtual User? User { get; set; }
public virtual Post? Post { get; set; }
}
Ваша первоначальная проблема-это предупреждение о том, что в C#8 было введено более четкое определение типов ссылок с нулевой возможностью. Для сущности приведенная выше реализация недопустима, если только эти отношения действительно не являются необязательными, что потребует, чтобы их поля FK (идентификатор пользователя и идентификатор поста) также были пустыми. Скорее всего, они не являются необязательными.
Основные варианты решения этой проблемы:
А) Выключите эту функцию. (Отключить нулевые ссылки в проекте)
Б) Попросите "прощения" за то, что они никогда не должны быть нулевыми, но не будут находиться в действительном состоянии при строительстве. (EF будет управлять ими)
public class PostFile {
public Int32 UserId{ get; set; }
public Int32 PostId { get; set; }
public virtual User User { get; set; } = null!;
public virtual Post Post { get; set; } = null!;
}
Изменение модели для пометки свойств навигации как ссылок, допускающих нуль, вероятно, вызовет всевозможные проблемы, как и при миграции, и начнет заменять ненулевые FK на нуль-способные. Чтобы отметить эти ссылки как недействительные и сделать EF счастливым:
public class PostFile {
public Int32? UserId{ get; set; }
public Int32? PostId { get; set; }
public virtual User? User { get; set; }
public virtual Post? Post { get; set; }
}
Что почти наверняка не то, что вы хотите в своем домене, или даже законно, если идентификатор пользователя и идентификатор postID являются частью ПК.
Лично я отмечаю это изменение в C# как "мину" MS, изначально включенную по умолчанию, например, оценку на стороне клиента в EF. :)
Я предвижу множество вопросов StackOverflow, связанных с этим предупреждением или критическими изменениями, и множество клиентских кодовых баз, усеянных тегами прощения"!", поскольку более старые объекты/ссылки, не способные к нулю, передаются в код с проверкой ссылок на нуль.