Entity Framework Генерируемый SQL - Таблица для каждого типа - Исполнитель? - PullRequest
2 голосов
/ 20 января 2012

Я меняю свои старые способы ADO.Net для Entity Framework. Класс «Мои продукты» состоит из примерно 20 таблиц (3 из которых я до сих пор объединил в один класс), есть также 5 таблиц типов продуктов, поэтому я создал класс продуктов Аннотация, и каждый тип имеет свой собственный класс, используя прекрасное наследование, которое обеспечивает Entity Framework, используя методологию Table per Type, как показано ниже. Таким образом, фактически 3 таблицы в классе продуктов и 5 таблиц типов продуктов, каждая со своим собственным классом, полученным из Product.

<there was a screenshot here, I don't have the rep to post it though!>

Я следил за тем, что этот EDM делает под прикрытием с SQL Server Profiler, пока я работал. Когда я запускаю простой запрос Linq to Entities, как показано ниже:

var model = from p in Product.Products
                    where p.archive == false && ((Prod_ID == 0) || (p.ID == Prod_ID))
                    select p;

Возвращает все типы продуктов, которые не были заархивированы, и, возможно, там также может быть выполнен поиск по идентификатору. SQL Server Profiler показывает мне 800 строку кусок SQL !!

Это нормально? И это исполнитель? Или я отправил Entity Framework с ума?

<I tried to post the SQL too, but there was too much of it for the post>

Так что, пожалуйста, просто проверка работоспособности и любые советы!

С уважением,

Mark

1 Ответ

0 голосов
/ 20 января 2012

Entity Framework может выдавать некоторые очень большие запросы, но, как правило, оптимизатор запросов SQL Server делает свое дело, и запрос выполняется с едва замеченным сервером.

Помимо того, что я в целом разумный, разумный, я лично не склонен беспокоиться о производительности и оптимизации, пока анализ производительности не скажет мне, что у меня есть узкое место; если вы уже используете профилировщик SQL, выполняется ли запрос относительно долго? Вы смотрели на план выполнения и он выглядит нормально?

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