В объекте Entity Framework отсутствуют связанные данные - PullRequest
2 голосов
/ 16 декабря 2010

У меня есть модель 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();

Это возвращает ноль.

Затем я беру сгенерированный 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 голосов
/ 17 декабря 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...