Я создал модель Entity Framework (v1), которая включает наследование, например:
Базовый класс: Выпуск
<- <strong>Жалоба
<- <strong>CustomerQuery
и т.д. (6 производных классов)
Эти классы сопоставляются с соответствующими таблицами в SQL Server.
Я был впечатлен тем, как я мог затем использовать LINQ для сущностей для создания - EF выясняет, что он должен поместить некоторые данные в одну таблицу, получить значение ключа идентификации и использовать его в другой таблице.
НО: когда я делаю простой запрос, такой как следующий
var result = dataContext.IssueSet.Where(x => x.Id == id);
... ToTraceString показывает SQL-код длиной более 1000 строк ! И он выполняет ужасно.
Как вы думаете, вероятно, что я сделал что-то не так в своей модели или это огромный код SQL, характерный для структур наследования в L2E?
P.S. Вот начало строки трассировки SQL для информации:
SELECT
1 AS [C1],
CASE WHEN (( NOT (([UnionAll8].[C45] = 1) AND ([UnionAll8].[C45] IS NOT NULL)))
AND ( NOT (([UnionAll8].[C46] = 1) AND ([UnionAll8].[C46] IS NOT NULL)))
AND ( NOT (([UnionAll8].[C47] = 1) AND ([UnionAll8].[C47] IS NOT NULL)))
AND ( NOT (([UnionAll8].[C48] = 1) AND ([UnionAll8].[C48] IS NOT NULL)))
AND ( NOT (([UnionAll8].[C49] = 1) AND ([UnionAll8].[C49] IS NOT NULL)))
AND ( NOT (([UnionAll8].[C50] = 1) AND ([UnionAll8].[C50] IS NOT NULL)))
AND ( NOT (([UnionAll8].[C51] = 1) AND ([UnionAll8].[C51] IS NOT NULL)))
AND ( NOT