EF4 Независимые Ассоциации - Зачем их избегать? - PullRequest
6 голосов
/ 16 января 2011

Я видел этот комментарий в MSDN ( ссылка и ссылка ):

"Обратите внимание, что независимых ассоциаций следует часто избегать, поскольку такие вещи, как N-Уровень и параллелизм становятся более сложными. "

Я новичок в EF4 и создаю веб-приложение n-Tier.Это звучит как важная ловушка.Может кто-нибудь объяснить мне, что это значит?

Ответы [ 2 ]

7 голосов
/ 31 января 2011

Я думаю, что это личное предпочтение. Первоначально EF был создан для использования только Indep. ассоциации и согласованы с более классическим подходом ERM. Однако большинство из нас, разработчиков, настолько зависимы от FK, что это делало жизнь очень сложной. Таким образом, MS дала нам FK в EF4, что означало не только наличие FK в качестве свойства в зависимой сущности, но и отношения определялись через ограничения в концептуальной модели, а не скрывались в отображениях. Есть еще несколько отношений, которые вы можете определить только с независимой ассоциацией: многие ко многим и уникальные внешние ключи. Обратите внимание, что если вы планируете использовать Службы RIA (не похоже на это), то RIA распознает только ассоциации FK.

Так что, если вы предпочитаете использовать независимые ассоциации, вы все равно можете использовать их в EF4. Они полностью поддерживаются. Но, как предполагает Джеймс, есть еще несколько ловушек, о которых нужно знать ... вещей, которые вам нужно сделать более явно из-за того, как EF работает с графиками, особенно. Или тот случай, когда вам просто нужен этот FK, например, у вас есть идентификатор клиента, но у вас нет экземпляра. Вы можете создать заказ, но без этого приятного свойства CustomerID FK вам придется выполнить дополнительное жонглирование, чтобы получить этот CustomerID.

НТН

3 голосов
/ 16 января 2011

Если вы новичок в EF и начинаете с EF4, простой ответ - игнорировать это - вы почти наверняка будете использовать ассоциации с внешними ключами, а не независимые ассоциации.

Ассоциация внешнего ключа поддерживается связью внешнего ключа в базе данных, и это отношение явно описано в концептуальной модели. Такая ассоциация является новой для EF4, и я понимаю, что это уступка после проблем, возникших у людей с независимыми ассоциациями.

Строго говоря, если вы хотите разделить схему хранения и концептуальную схему (что является точкой EF), вы бы не хотели, чтобы ваша концептуальная схема знала о таких вещах, как внешние ключи, поскольку это база данных (то есть хранилище) концепция. Более ранние версии EF следовали этому подходу, и у нас есть такая вещь, как Независимая Ассоциация.

Думайте о независимых ассоциациях как об ассоциациях, которые отслеживаются EF без знания основного внешнего ключа. EF все еще поддерживает это, но у них есть существенные недостатки.

EF4 в VS2010 будет использовать ваши внешние ключи и создавать отношения внешних ключей, если вы не укажете обратное. В целом эти работы, как и следовало ожидать. Есть еще некоторые ошибки - например, вокруг каскада удаляет.

Если вы хотите изучать EF - я могу порекомендовать эту книгу:

http://learnentityframework.com/learnentityframework/

Все, что вы хотите знать, очень четко объяснено.

...