2011-07-04 29 views
1

SQL Expressデータベースの電気通信交換用の3つのエンティティ階層があり、Entity Frameworkを使用してLINQクエリを実行しています。LINQエンティティ参照の参照先を選択しますか?

ExchangeSubRegionであり、Regionである。明らかに、の関係に暗黙のうちにExchangesもあります。

(Exchange) *...1 (SubRegion) *...1 (Region) 
      *.....................1 

時には、ユーザーがリージョン内またはサブリージョン内のすべての交換を表示したい場合があります。次のLINQクエリを使用すると、例外が発生します。

Data.Region region = regionComboBox.SelectedItem as Data.Region; 

var esas = from esa in JITScheduleContainer.Exchanges 
    where esa.SubRegion.Region == region 
    select esa; 

exchangeComboBox.Items.AddRange(esas.ToArray()); 

例外:

型 'CpasJitScheduler.Data.Region' が一定の値を作成することができません。 このコンテキストでは、プリミティブ型( 'Int32、 String、およびGuid'など)のみがサポートされています。

EFモデルには、親の親オブジェクトを参照する必要がありますか?

答えて

1

私はint Idフィールドを使用して比較することができませんでした。結果のLINQステートメント:

Data.Region region = regionComboBox.SelectedItem as Data.Region; 

var esas = from esa in Container.Exchanges 
      where esa.SubRegion.Region.Id == region.Id 
      select esa; 

exchangeComboBox.Items.AddRange(esas.ToArray());