Entity Framework 4.0 с производительностью Sql Compact Edition 4.0 - PullRequest
0 голосов
/ 09 апреля 2011

У меня есть веб-приложение с моделью EF, которое я изначально проектировал с использованием бэкэнда SQL Server 2008. Позже я решил использовать SQL CE для переносимости, поэтому я преобразовал модель в Sql CE 4.0. Тем не менее, я столкнулся с серьезными проблемами производительности при запуске этого приложения.

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

        Trace.Write("Retrieving node from database", "Application");
        var name = value.ToString();
        var node = DataContext.Entities.Nodes
            .SingleOrDefault(n => n.Name == name);
        Trace.Write("Node retrieved from database ", "Application");

Когда я просматриваю информацию трассировки (trace.axd), эти строки кода занимают цикл 0,6 секунды !!

Информация о трассировке

Category       Message                         From First(s)    From Last(s)
Application Retrieving node from database   0.00057591118424269 0.000576
Application Node retrieved from database    0.595122564460008   0.594547

И это происходит везде в моем приложении, где я запрашиваю по имени.

Есть идеи? Я предполагаю, что мне нужно определить индекс для столбца, но как мне это сделать в модели EF?

РЕДАКТИРОВАТЬ: Грамматика РЕДАКТИРОВАТЬ 2: Правописание в заголовке

Ответы [ 2 ]

2 голосов
/ 09 апреля 2011

У меня есть образец с некоторыми советами по производительности, используя global.asax: http://erikej.blogspot.com/2011/01/entity-framework-with-sql-server.html и другие советы по производительности здесь: http://blogs.msdn.com/b/wriju/archive/2011/03/15/ado-net-entity-framework-performance-tips.aspx

1 голос
/ 09 апреля 2011

В прошлом я использовал более старые версии SQL CE и обнаружил, что одним из основных узких мест является открытие соединения.

Вы можете попробовать самостоятельно управлять открытым соединением и передать его в контекст данных вручную (вместо того, чтобы разрешить контексту автоматически управлять соединением).

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