【发布时间】:2009-06-08 14:50:16
【问题描述】:
我构建了一个包含继承的实体框架 (v1) 模型,如下所示:
基类:问题
投诉
客户查询 等(6 个派生类)
这些类映射到 SQL Server 中的相应表。
然后我可以使用 LINQ to 实体进行创建的方式给我留下了深刻的印象 - EF 发现它必须将一些数据放在一个表中,获取标识键值并在另一个表中使用它。
但是:当我进行如下简单查询时
var result = dataContext.IssueSet.Where(x => x.Id == id);
... ToTraceString 揭示了超过 1000 行的 SQL 代码!而且它的表现很棒。
你认为我的模型可能做错了什么,还是 L2E 中继承结构的巨大 SQL 代码特征?
附:这是信息的 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 有一段时间了,从来没有遇到过这样的问题。
-
读完这篇文章后我很不高兴:social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/…(有些人最终写了 10k 行 SQL,但看不到解决方案)
标签: linq-to-entities