Я построил модель Entity Framework (v1), который включает в себя наследование, как это:Linq к Entities
Базовый класс: Выпуск
< - Жалоба
< - 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
Я думаю, что вы, вероятно, сделали что-то странное в своей настройке EF - я давно использовал EF и никогда не испытывал таких проблем. –
Меня не поощряют после прочтения этого: http://social.msdn.microsoft.com/Форумы/en-US/adodotnetentityframework/thread/e412859c-4c85-4769-8c14-96bd0f3e022b (некоторые люди, которые в итоге имеют 10k строк SQL и не имеют никакого решения) – Martin