クライアントとポストコードの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
いくつかのコードを参考にしてください。 – Yakimych
私はあなたがここに尋ねるかわからない - しかし、あなたは熱心ロードしようとしたがあります(=> a.ClientId == 9063202 A).SingleOrDefault() 'クライアントC = Clients.Include( "郵便番号");'ところで。 - あなたは 'SingleOrDefault'メソッドで述語を使うことができます - Whereメソッドは必要ありません。 RPM1984 @ – RPM1984
- 私はここでの問題は、ロードを使用してみました – littlechris