2010-12-16 5 views
2

クライアントとポストコードの2つのテーブルを持つEntity Frameworkモデルがあります。郵便番号は多くのクライアントを持つことができ、クライアントは1つの郵便番号を持つことができます。彼らは郵便番号に加入しています。 2つのテーブルがビューにマップされています。Entity Frameworkオブジェクトに関連するデータがありません

私はモデルに郵便番号を持たないクライアントをいくつか持っていますが、DBにはあります。

私はいくつかのテストを実行し、私はPostcode.Clientsではなく、すべてのクライアントを実行するときにクライアントを返すされた郵便番号を見つけましたか?データベースでは、郵便番号には14の関連クライアントがありましたが、EFは最初の6を返すだけでした。基本的に、特定のポストコードがすべてのデータを返すわけではありません。

遅延ロードがオンになっていて、私は幸運にもそれをオフにしようとしました。

アイデア?

私はVS 2010を使用しています、C#の、.NET 4.0、2008

EF4とSQL Serverのおかげ

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

+0

私はあなたがここに尋ねるかわからない - しかし、あなたは熱心ロードしようとしたがあります(=> a.ClientId == 9063202 A).SingleOrDefault() 'クライアントC = Clients.Include( "郵便番号");'ところで。 - あなたは 'SingleOrDefault'メソッドで述語を使うことができます - Whereメソッドは必要ありません。 RPM1984 @ – RPM1984

+0

- 私はここでの問題は、ロードを使用してみました – littlechris

答えて

0

と手動子データを取得する。 厄介ですが、これが起こっている理由を見つけることができません。コメントの応援

関連する問題