是否可以使用Include
来预测加载实体?
我无法使用Include
的原因是出现区分大小写。
请考虑以下示例:
我有两张桌子:
注意案例的区别。
当我想加载Sager
Stamkartotek
时,我使用Include
,但Include
未加载Stamkartotek
:
** 更新1 **
我注意到这种奇怪的行为 - 如果我使用来自Stamkartotek
的任何字段,它会正确加入:
但是,如果我只检索Stam_nr
的值而不是整个对象 - 它会给我A
而不是a
:
到目前为止的研究:
更新2
SQL基于Include
:
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修复引用。它似乎也不起作用:
答案 0 :(得分:3)
在外键周围创建一个LOWER视图,以确保读取始终将相同的大小写返回给EF。
使用存储过程进行插入和删除
您可以在此处跟踪并投票选择要解决的问题:
答案 1 :(得分:1)
在这种情况下我没有所有信息,我认为你必须使用整数键更新你的表的关系来建立关系。
当使用linq时,例如,当您调用ToList()或First时,查询将执行到数据库。如果使用Include,则在调用某些操作时,查询将加载数据。
A或a的问题可以是整理情况,检查一下你的配置有些整理忽略了数据的情况。
我建议: 使用整数键更新正在使用的表,如果要加载相关数据,请使用左外部联接。有时最好使用好的旧tsql(你也可以在linq中进行左外连接)。
答案 2 :(得分:1)
您可以在单独的查询中加载实体,而不是使用.Include
。更改跟踪器将修复已经跟踪的相关实体的关系,如果您的查询正确,您应该从功能角度获得一个解决方案,相当于使用.Include
。