Прежде всего, чтобы иметь свойства навигации от одного объекта к другому, они должны быть объявлены как виртуальные в вашем POCO.Итак, вы хотели бы это:
public class classReservation
{
public int ReservationID {get; set;}
public virtual classMember Member {get; set;}
}
Это потому, что во время выполнения EF фактически подклассирует ваш POCO, используя отражение.Чтобы свойство навигации работало, оно должно иметь возможность переопределять его.Вот почему это должно быть virtual
.
Чтобы ответить на ваш второй вопрос, нет, вам не нужно иметь «свойство внешнего ключа» от дочерней сущности к родительской сущности.Это помогает EF, но не является необходимым.
Мы находимся в процессе удаления свойств внешнего ключа из наших моделей сущностей.Для этого вам все равно нужно сказать EF, как отобразить отношения в БД.Это можно сделать в методе OnModelCreating вашего класса DbContext:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<classReservation>
.HasRequired(r => r.classMember)
.WithMany()
.Map(x => x.MapKey("MemberId"));
}
Вы также можете использовать HasOptional, WithRequiredDependent и т. Д., В зависимости от количества элементов и кратности отношения.