Entity framework 实体框架对象缺少相关数据
我有一个实体框架模型,它有两个表,客户机和邮政编码。邮政编码可以有多个客户端,客户端可以有1个邮政编码。他们在邮政编码上连在一起。 这两个表映射到视图 我有一些客户在模型中没有邮政编码,但是在数据库中有 我运行了一些测试,发现当我执行Entity framework 实体框架对象缺少相关数据,entity-framework,sql-server-2008,Entity Framework,Sql Server 2008,我有一个实体框架模型,它有两个表,客户机和邮政编码。邮政编码可以有多个客户端,客户端可以有1个邮政编码。他们在邮政编码上连在一起。 这两个表映射到视图 我有一些客户在模型中没有邮政编码,但是在数据库中有 我运行了一些测试,发现当我执行Postcode时返回客户的邮政编码。客户,但不是所有客户?在db中,a邮政编码有14个相关客户端,但EF只返回前6个。基本上,某些邮政编码并没有返回所有数据 惰性加载已打开,我已尝试在没有任何运气的情况下关闭它 有什么想法吗 我正在使用VS2010、C#、.NET
Postcode时返回客户的邮政编码。客户
,但不是所有客户?在db中,a邮政编码有14个相关客户端,但EF只返回前6个。基本上,某些邮政编码并没有返回所有数据
惰性加载已打开,我已尝试在没有任何运气的情况下关闭它
有什么想法吗
我正在使用VS2010、C#、.NET4.0、EF4和SQLServer2008
谢谢
更新:
我一直在林帕德处理这件事。我尝试以下代码
Client c = Clients.Where(a => a.ClientId == 9063202).SingleOrDefault();
c.PostcodeView.Dump();
这将返回null
然后,我获取生成的SQL并在一个单独的SQL查询中运行它,它工作正常(在我将@添加到变量名的开头之后)
最终删除了关系并手动获取子数据。
令人讨厌,但找不到发生这种情况的原因。为评论喝彩最终删除了关系并手动获取子数据。
令人讨厌,但找不到发生这种情况的原因。为展示一些代码的评论干杯。我不知道你在这里问什么-但是你尝试过快速加载:
Client c=Clients.Include(“Postcode”)。其中(a=>a.ClientId==9063202)。SingleOrDefault()
btw-您可以在SingleOrDefault
方法中使用谓词-您不需要Where方法。@RPM1984-我认为这里的问题在于,实体框架生成的SQL语句在直接在SQL中运行时返回不同的结果,而不是在使用关联访问时返回不同的结果客户端和邮政编码尝试使用Load()和Include,但没有成功!显示一些代码可能会有帮助。我不知道你在这里问什么-但你是否尝试过快速加载:Client c=Clients.Include(“Postcode”)。其中(a=>a.ClientId==9063202)。SingleOrDefault()
btw-您可以在SingleOrDefault
方法中使用谓词-您不需要Where方法。@RPM1984-我认为这里的问题在于,实体框架生成的SQL语句在直接在SQL中运行时返回不同的结果,而不是在使用关联访问时返回不同的结果客户端和邮政编码尝试使用Load()和Include,但没有成功!
SELECT TOP (2)
[Extent1].[ClientId] AS [ClientId],
[Extent1].[Surname] AS [Surname],
[Extent1].[Forename] AS [Forename],
[Extent1].[FlatNo] AS [FlatNo],
[Extent1].[StNo] AS [StNo],
[Extent1].[Street] AS [Street],
[Extent1].[Town] AS [Town],
[Extent1].[Postcode] AS [Postcode]
FROM (SELECT
[ClientView].[ClientId] AS [ClientId],
[ClientView].[Surname] AS [Surname],
[ClientView].[Forename] AS [Forename],
[ClientView].[FlatNo] AS [FlatNo],
[ClientView].[StNo] AS [StNo],
[ClientView].[Street] AS [Street],
[ClientView].[Town] AS [Town],
[ClientView].[Postcode] AS [Postcode]
FROM [dbo].[ClientView] AS [ClientView]) AS [Extent1]
WHERE 9063202 = [Extent1].[ClientId]
GO
-- Region Parameters
DECLARE @EntityKeyValue1 VarChar(8) = 'G15 6NB'
-- EndRegion
SELECT
[Extent1].[Postcode] AS [Postcode],
[Extent1].[ltAstId] AS [ltAstId],
[Extent1].[ltLhoId] AS [ltLhoId],
[Extent1].[ltChcpId] AS [ltChcpId],
[Extent1].[ltCppId] AS [ltCppId],
[Extent1].[ltWardId] AS [ltWardId],
[Extent1].[ltAst] AS [ltAst],
[Extent1].[ltCpp] AS [ltCpp],
[Extent1].[ltWard] AS [ltWard],
[Extent1].[WardNo] AS [WardNo],
[Extent1].[Councillor] AS [Councillor],
[Extent1].[ltAdminCentre] AS [ltAdminCentre],
[Extent1].[ltChcp] AS [ltChcp],
[Extent1].[Forename] AS [Forename],
[Extent1].[Surname] AS [Surname],
[Extent1].[AreaNo] AS [AreaNo],
[Extent1].[LtAomId] AS [LtAomId],
[Extent1].[OOHltCoordinatorId] AS [OOHltCoordinatorId],
[Extent1].[OvernightltCoordinatorId] AS [OvernightltCoordinatorId],
[Extent1].[DayltCoordinatorId] AS [DayltCoordinatorId]
FROM (SELECT
[PostcodeView].[Postcode] AS [Postcode],
[PostcodeView].[ltAstId] AS [ltAstId],
[PostcodeView].[ltLhoId] AS [ltLhoId],
[PostcodeView].[ltChcpId] AS [ltChcpId],
[PostcodeView].[ltCppId] AS [ltCppId],
[PostcodeView].[ltWardId] AS [ltWardId],
[PostcodeView].[ltAst] AS [ltAst],
[PostcodeView].[ltCpp] AS [ltCpp],
[PostcodeView].[ltWard] AS [ltWard],
[PostcodeView].[WardNo] AS [WardNo],
[PostcodeView].[Councillor] AS [Councillor],
[PostcodeView].[ltAdminCentre] AS [ltAdminCentre],
[PostcodeView].[ltChcp] AS [ltChcp],
[PostcodeView].[Forename] AS [Forename],
[PostcodeView].[Surname] AS [Surname],
[PostcodeView].[AreaNo] AS [AreaNo],
[PostcodeView].[LtAomId] AS [LtAomId],
[PostcodeView].[DayltCoordinatorId] AS [DayltCoordinatorId],
[PostcodeView].[OOHltCoordinatorId] AS [OOHltCoordinatorId],
[PostcodeView].[OvernightltCoordinatorId] AS [OvernightltCoordinatorId]
FROM [dbo].[PostcodeView] AS [PostcodeView]) AS [Extent1]
WHERE [Extent1].[Postcode] = @EntityKeyValue1