2010-12-16 5 views
2

У меня есть модель Entity Framework с двумя таблицами, клиентом и почтовым индексом. Почтовый индекс может иметь много клиентов, клиент может иметь 1 почтовый индекс. Они соединены в почтовый индекс. Две таблицы отображаются в виде.Объект Entity Framework отсутствует связанные данные

У меня есть несколько клиентов, которые не имеют почтового индекса в модели, однако в БД они делают!

Я провел несколько тестов и обнаружил почтовые индексы, которые возвращали клиентов, когда я делаю Postcode.Clients, но не всех клиентов? В db почтовый индекс имел 14 связанных клиентов, но EF возвращал только первые 6. В основном определенные почтовые индексы не возвращают все данные.

Lazy loading включен, и я попытался отключить его без везения.

Любые идеи?

Я использую VS 2010, C#, .NET 4.0, EF4 и SQL Server 2008

Благодаря

UPDATE:

Я бежал через это в 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

Показать код может быть полезно. – Yakimych 2010-12-16 12:50:34

ответ

0

Законченное удаление отношения и вручную получение дочерних данных. Неприятный, но не могу найти причину, по которой это происходит. Приветствия для комментариев

Смежные вопросы