Entity framework отношения один к одному
У меня есть таблица клиентов и тип членства
Существует связь один к одному между клиентами и таблицей membershiptype
таблица customer имеет внешний ключ таблицы membershiptype.
У меня есть код, который довольно запутан, но отлично работает для создания внешнего ключа в таблице customers.
Это класс для таблицы клиентов
public class Customer { public int Id { get; set; } [Required(ErrorMessage="Please Enter Customer's name")] [StringLength(255)] public string Name { get; set; } public bool IsSubscribedToNewsLetter { get; set; } public MembershipType MembershipType { get; set; } [Display(Name = "Date of Birth")] [Min18YearsIfAMember] public DateTime? Birthdate { get; set; } [Display(Name="MembershipType")] public byte MembershipTypeID { get; set; } } }
А класс для таблицы membershiptype-это
public class MembershipType { public byte Id { get; set; } public string Name { get; set; } public short SignUpFee { get; set; } public byte DurationInMonths { get; set; } public byte DiscountRate { get; set; } public static readonly byte unknown = 0; public static readonly byte PayAsYouGo = 1; } }
Что я уже пробовал:
Это большинство tutoirals в интернете для отношений один к одному используют virtual и не используют вышеупомянутую stretegy для создания ключа forign
таблица students содержит ключ для таблицы studentaccount. и пользуется виртуальным.
public class Student { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } public virtual StudentAccount StudentAccount { get; set; } }
Таблица счетов студентов
public class StudentAccount { public int Id { get; set; } public string Name { get; set; } public int Amount { get; set; } [Required] public virtual Student Student { get; set; } }
В чем разница между двумя методами для этих отношений один к одному? и как это работает при отображении внешнего ключа.