Почему небольшое количество операций добавления / удаления занимает несколько секунд в EF4? - PullRequest
0 голосов
/ 24 декабря 2010

Использование Entity Framework 4. В прошлом я создал базу данных Code First, и часть кода должна удалить и добавить 16 объектов, это занимает 6 секунд каждый. Это 300+ мс для каждого запроса!

Удаление / добавление происходят в области действия foreach, а foreach.

существует SaveChanges().

alt text

На изображении выше вы видите, что для каждой из 16 звонков требуется 6 секунд, что составляет 34% времени.

Это не звучит нормально для меня ... Почему это так и как я могу улучшить производительность?

Если нет решения: есть ли какие-то обходные пути, которые я могу использовать? Было бы больно переписывать мой проект ...

1 Ответ

5 голосов
/ 24 декабря 2010

Я бы посоветовал вам попробовать что-то вроде EF Profiler .Я думаю, что есть бесплатная пробная версия, которая позволяет вам попробовать.По сути, с его помощью вы можете видеть, что происходит внутри вашего приложения EF.

Еще один момент, на который следует обратить внимание: это случайно веб-приложение?В моем собственном проекте я обнаружил, что когда я запускал приложение в Cassini (встроенный в Visual Studio WebServer), все было довольно медленно.Переход на IIS 7 внезапно сделал все намного быстрее.Это тоже не сложно, если у вас установлен IIS.Просто перейдите в свойства вашего веб-проекта, перейдите на вкладку «Интернет» и выберите «Использовать локальный веб-сервер IIS».Это также позволит вам создать виртуальный каталог отсюда, поэтому нет необходимости напрямую управлять IIS.

Кроме этого, я не думаю, что о вашей проблеме можно сказать много, поскольку мы неУ меня нет примера кода.Возможно, ваши 16 объектов на самом деле производят много запросов из-за связанных сущностей или чего-то еще.EF Profiler покажет это.


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

Я знаю, что 16 сущностей - это не много (пока), но я решилВ любом случае, добавьте сюда это маленькое понятие.

...