Если вы хотите в полной мере использовать ORM, вы обязательно будете использовать ссылку на сущность:
public class Order
{
public int ID { get; set; }
public Customer Customer { get; set; } // <-- Customer object
...
}
Как только вы генерируете модель сущности из базы данных с FK, она всегда будет генерировать ссылки на сущности.Если вы не хотите их использовать, вы должны вручную изменить файл EDMX и добавить свойства, представляющие FK.По крайней мере, это имело место в Entity Framework v1, где допускались только независимые ассоциации.
Entity Framework v4 предлагает новый тип ассоциации, называемый Связью внешнего ключа.Наиболее очевидное различие между независимым и внешним ключом связи заключается в классе заказа:
public class Order
{
public int ID { get; set; }
public int CustomerId { get; set; } // <-- Customer ID
public Customer Customer { get; set; } // <-- Customer object
...
}
Как видите, у вас есть и свойство FK, и ссылка на сущность.Существует больше различий между двумя типами ассоциаций:
Независимая ассоциация
- Она представлена как отдельный объект в
ObjectStateManager
.Он имеет свой собственный EntityState
! - При создании ассоциации вам всегда нужны права с обоих концов ассоциации
- Эта ассоциация отображается так же, как и сущность.
Ассоциация внешнего ключа
- Не представляется как отдельный объект в
ObjectStateManager
.В связи с этим вы должны соблюдать некоторые особые правила. - При создании ассоциации вам не нужны оба конца ассоциации.Достаточно иметь дочернюю сущность и PK родительской сущности, но значение PK должно быть уникальным.Поэтому при использовании связи с внешними ключами вы также должны назначить временные уникальные идентификаторы вновь создаваемым объектам, используемым в отношениях.
- Эта связь не отображается, а вместо этого определяет ограничения ссылок.
Если выЧтобы использовать ассоциацию внешнего ключа, необходимо отметить Включить столбцы внешнего ключа в модель в Мастере модели данных сущностей.
Редактировать:
Я обнаружил, что разница между этими двумятипы ассоциаций не очень известны, поэтому я написал небольшую статью , в которой более подробно изложил свое мнение по этому поводу.