实体框架对象缺少相关数据

时间:2010-12-16 11:56:29

标签: entity-framework sql-server-2008

我有一个Entity Framework模型,它有两个表,客户端和邮政编码。邮政编码可以有很多客户端,客户端可以有1个邮政编码。他们加入了邮政编码。 这两个表映射到视图。

我有一些客户在模型中没有邮政编码,但在数据库中他们做了!

我运行了一些测试,发现当我执行Postcode.Clients而不是所有客户端时返回客户端的邮政编码?在数据库中,邮政编码有14个相关客户端,但EF只返回第一个6.基本上某些邮政编码没有返回所有数据。

已启用延迟加载,我尝试将其关闭但没有任何运气。

有什么想法吗?

我正在使用VS 2010,C#,.NET 4.0,EF4和SQL Server 2008

由于

更新:

我在LinqPad中经历过这个。我尝试以下代码

Client c = Clients.Where(a => a.ClientId == 9063202).SingleOrDefault();
c.PostcodeView.Dump();

返回null。

然后我获取生成的SQL并在单独的SQL查询中运行它并且它正常工作(在我将@添加到变量名称的开头之后)

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

1 个答案:

答案 0 :(得分:0)

结束删除关系并手动获取子数据。 讨厌,但找不到这种情况发生的原因。欢呼声评论

相关问题