2013-10-15 4 views
0

Я работаю над приложением Legacy, и у нас низкая производительность с Entity Framework (4.0.0) и массивной вставкой.Неудовлетворительная производительность для генератора POCO

Когда я попробовал генератор POCO (T4), проблема была хуже, SaveChanges была в три раза длиннее. Это огромно, если у вас есть идея, почему у меня есть эта проблема, мне интересно.

+0

ORM не предназначены для «массивных вставок». Используйте чистый SQL. –

+0

Я знаю, что я не поклонник orm, но приложение Legacy использует это и имеет очень большую модель, пакет и приложение используют один и тот же домен, я не могу быстро улучшить эту стратегию ... Я не знаю, как это, но я должен иметь дело с ним вначале. Спасибо за ваш комментарий – rad

+0

Без кода мы не можем увидеть, есть ли какие-либо очевидные хиты производительности. –

ответ

0

У меня нет показателей производительности для разных генераторов. Но узкое место не должно быть в вашем контексте. Вы должны знать, что EF будет генерировать одну инструкцию SQL для каждой вставки, обновления и удаления, и если вы не открыли явное подключение в первую очередь, оно будет регистрироваться до и выходить из SQL Server один раз в SQL-заявлении.

Также контекст должен поддерживать состояния и отношения, поэтому производительность ухудшается по мере того, как ваш контекст становится все больше и больше. SaveChanges сначала должен выяснить, что происходит в контексте, и должно быть причиной того, почему POCO Generator vs Entity Object заканчивается разными временами выполнения. Поскольку это будет в 3 раза дольше, для его выяснения потребуется больше деталей.

PS, если вы застряли в устаревшем коде, вы должны изучить возможность использования массовой копии с EF.

Смежные вопросы