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