Какую наиболее раздражающую функцию (или отсутствие функции) вы обнаружили в Entity Framework? - PullRequest
5 голосов
/ 19 декабря 2009

Я начинаю с Entity Framework. Это звучит здорово. Но мне интересно, стоит ли мне где-то остерегаться слабости. Есть опыт?

Ответы [ 4 ]

5 голосов
/ 19 декабря 2009

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

Вот что я бы сказал после работы с первой версией в течение примерно 6 месяцев с использованием БД приличного размера в sql 2k8 (более 40 таблиц, несколько таблиц со строками, близкими к 1M, и приличный объем трафика)

  • Отсутствие свойств внешнего ключа . То есть, если я хочу знать или работать только с идентификатором связанной таблицы, я должен загрузить фактическую сущность. (исправлено в следующей версии)
  • Полное отсутствие простого внешнего соединения , как у linq to sql при использовании DefaultIfEmpty . Исправлено в следующей версии.
  • Сгенерированное Sql меньше оптимального Это, похоже, исправлено и в следующей версии
  • Очень сложно абстрагироваться от вашего кода для тестируемости и для использования в многоуровневых средах , но это можно сделать. Это также можно классифицировать как проблему POCO, которая также была решена.

Есть и другие, но это мои лучшие.

В целом я бы использовал его снова, но если вы начинаете с нуля, пожалуйста, избавьте себя от боли и дождитесь последней версии или начните использовать бета-версию, если можете.

2 голосов
/ 19 декабря 2009

Вы можете найти полезные пошаговые руководства для Entity Framework 4.0 . Все обсуждаемые новые функции являются для кого-то раздражающими выбросами текущей выпущенной версии.

Мне показались особенно интересными новые функции TDD / тестируемости и функции генерации кода T4.

1 голос
/ 19 декабря 2009

О EF1:

  • Сгенерированный SQL ужасен. Он умножает соединения, он в 10 раз больше, чем мог. У меня был простой запрос, но с большим количеством соединений и генерация этого запроса EF (не выполнялась) значительно замедляла мое приложение. Нет, я не могу использовать предварительно скомпилированный запрос. Я использовал вид, чтобы справиться с этим. SQL Profiler был полезен.
  • Первичные ключи в видах не распознаются должным образом. При импорте представления или обновлении схемы необходимо изменить файл edmx вручную.
  • Вы можете создавать объекты из базы данных в графическом виде, обновлять модель из базы данных, но это не всегда хорошо работает, особенно когда вы меняете типы полей или внешние ключи.
  • Вы не можете обновить одну таблицу в модели, всегда нужно обновить всю модель из базы данных.
  • Вы не можете определить базовый класс для ваших сущностей, он уже определен (EntityObject). Вы можете использовать интерфейсы, потому что классы определены как частичные.
  • Нет POCO, классы сущностей тесно связаны с каркасом.
  • Вы можете установить внешний ключ с помощью EntityReference.EntityKey, но когда у вас есть EntityCollection, подготовьтесь к поездке в оба конца в БД. Или я что-то упустил?
0 голосов
/ 19 декабря 2009

Я нахожу объекты POCO и дизайн модели первой в бета-версии EF4 очень сексуальными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...