【发布时间】:2013-11-19 09:59:46
【问题描述】:
除了使用Include 来急切加载实体之外,还有其他方法吗?
我不能使用 Include 的原因是它似乎区分大小写。
考虑以下示例:
我有两张桌子:
注意大小写的区别。
当我想急切加载Sager 的Stamkartotek 时,我使用Include,但Include 不加载Stamkartotek:
** 更新 1 **
我注意到这种奇怪的行为 - 如果我使用来自Stamkartotek 的任何字段,它会正确连接:
但如果我只检索 Stam_nr 的值而不是整个对象 - 它会给我 A 而不是 a:
迄今为止的研究:
更新 2
使用Include 生成的SQL:
FROM [dbo].[Sager] AS [Extent1]
INNER JOIN [dbo].[Stamkartotek] AS [Extent2] ON [Extent1].[Klient_Stam_nr] = [Extent2].[Stam_nr]
WHERE 'jek15' = [Extent1].[Sags_nr]
更新 3
将它们加载到单独的查询中,并让 changetracker 修复引用。它似乎也不起作用:
【问题讨论】:
-
MSDN 论坛帖子已过时。您是否检查过他们是否在更高版本的 EF 中修复了它?如果有,您应该将您的 EF 版本升级到可以解决问题的版本。不要期望将修复程序向后移植到以前的 EF 版本,尤其是 4.1 之前的版本
-
@PanagiotisKanavos 我尝试使用EF 6.0.1 构建我的模型,但问题仍然存在:|
-
那么您可能应该将用于关系的列替换为整数。问题不在
Include中,而是在关联使用文本字段时的 SQL 生成器中。无论如何,使用文本数据作为键是一种不常见的做法(出于您刚刚遇到的原因)。或者,您可以下载 EF 代码(它是 OSS)并修复它,如果您有时间... -
-
@Colin 您应该将该链接添加到您的答案中 - 它非常相关
标签: sql-server linq c#-4.0 entity-framework-4.1 ef-model-first