У меня 2 стола. Один - это предпочтение, а другой - профиль. Профиль может иметь 0 или 1 предпочтение. Я пытаюсь создать столбец внешнего ключа в Preference с именем Profile_id, но он дает мне ...

1
GEORGI DIMITROV 16 Янв 2021 в 21:50

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; }

}
0
David Browne - Microsoft 16 Янв 2021 в 20:08

Вам необходимо сделать Profile_id обнуляемым:

public virtual int? Profile_id { get; set; }
0
zXynK 16 Янв 2021 в 19:00

Это может быть соглашение об именах. Попробуйте изменить профили на профиль (это не список, зачем писать профили?)

Почему вы добавили обязательный атрибут в свойство навигации?

0
caroline mwasigala 16 Янв 2021 в 19:02
65753387