Entity Framework V4: соображения производительности "только код"

Я собираюсь начать работу над новым проектом, и мне интересно, если "Только код" правильный путь. Мы также рассматриваем другой подход, основанный на моделировании, с помощью дизайнера, но предпочли бы проектировать мои доменные модели вне EF-дизайнера.

Наш домен, скорее всего, будет содержать более 100 объектов. Я читал, что огромное количество объектов может несколько замедлить EF (то есть: создание контекста и первый вызов SaveChanges).

Поскольку нет файла EDMX для хранения метаданных, будет ли этот подход медленнее? Я искал в Интернете, но не смог найти никакой информации по этому вопросу.

Я знаю, что это все еще только в CTP и не хватает многих функций, но я просто ищу ввод / руководство на данный момент.

3 ответа

Решение

Поскольку.NET 4, включая EF4, является бета-версией 1, в настоящее время вы не получите никакого полезного общего ответа. Для вашего конкретного случая, почему бы не проверить.

Создайте модель объекта с одним объектом и выполните несколько тестов производительности. Затем разверните модель, чтобы иметь больше объектов, и повторите тест. Если количество объектов в модели влияет на производительность, вы должны увидеть разницу в производительности.

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

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

Вы правы в том, что большое количество объектов может замедлять EF.

Предварительное создание представлений часто рекомендуется для повышения производительности при работе с большими моделями. Но эта функция зависит от наличия файла EDMX, поэтому неудивительно, что он не работает с Code-Only.

Однако, если вам нужно предварительно скомпилировать представления, вы всегда можете использовать функцию ToEdmx() ​​CodeOnly, чтобы перейти от мира CodeOnly к стандартному миру EDMX. И, конечно же, попав в мир EDMX, вы можете предварительно скомпилировать свои взгляды.

Однако это не обязательно тот подход, который я выбрал бы.

Я думаю, что контекст с 100 или более IQueryable свойствами не совсем идеален с точки зрения удобства использования в любом случае.

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

Результатом будет ряд быстрых и простых в использовании ObjectContexts, предназначенных для текущего набора задач.

Которое ИМХО гораздо более желательно.

Надеюсь это поможет

Alex

Другие вопросы по тегам