Это действительно возвращает нас к истории Entity Framework: в EF1 у нас было только Независимая ассоциация , означающая, что FK (например, ManufacturerId) не были выставлены на зависимый объект (например, Product), и вы работаете только свойство навигации (например, Производитель).
В EF4 введен новый тип ассоциации: Ассоциация внешнего ключа , где в модели всплыли FK, и вы можете напрямую с ними работать.
Таким образом, приведенная ниже модель по-прежнему является вполне допустимой, но она в стиле EF1 (т.е. Независимая ассоциация):
public class Product {
public int ID { get; set; }
public virtual Manufacturer Manufacturer { get; set; }
}
При этом рекомендуется всегда включать внешние ключи в объекты, поскольку это дает вам максимальную гибкость для работы с вашей объектной моделью:
public class Product {
public int ID { get; set; }
public int ManufacturerId { get; set; }
public virtual Manufacturer Manufacturer { get; set; }
}
Интересным моментом является то, что по соглашению , код EF сначала распознает ManufacturerId
как FK для Manufacturer
свойства навигации и создаст связь на основе этого в базе данных.
Кстати, это не имеет ничего общего с отложенной загрузкой, отложенная загрузка будет работать с FK или без них, если вы отметите свойство навигации как vitual , как вы делали в своей модели.