У меня 2 стола. Один - это предпочтение, а другой - профиль. Профиль может иметь 0 или 1 предпочтение. Я пытаюсь создать столбец внешнего ключа в Preference с именем Profile_id, но он дает мне ...
3 ответа
EF считает, что вам нужна связь 1-1, которая требует, чтобы свойство внешнего ключа было ключевым свойством. Но я предполагаю, что это не то, что вы действительно хотите. Попробуйте что-то вроде этого:
public class Profile
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Required]
public virtual int Id { get; set; }
[Required]
public virtual string name { get; set; }
[Required]
public virtual string profile_pic { get; set; }
public virtual ICollection<Preference> Preferences { get; } = new HashSet<Preference>();
}
public class Preference
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Required]
public virtual int Id { get; set; }
public virtual Profile Profile { get; set; }
[ForeignKey("Profile")]
public virtual int Profile_id { get; set; }
}
Вам необходимо сделать Profile_id обнуляемым:
public virtual int? Profile_id { get; set; }
Это может быть соглашение об именах. Попробуйте изменить профили на профиль (это не список, зачем писать профили?)
Почему вы добавили обязательный атрибут в свойство навигации?
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.