2011-08-10 14 views
1

2つのDBテーブルに「結合」する方法がありますので、第1のテーブルからIDを取得し、このIDを使用して2番目のテーブルから説明を取得できますか?2つのテーブルを結合するエンティティへのLinq

たとえば、次のクエリでは部品IDが取得されますが、この部品IDの説明を見つけてデータグリッドに記述する必要があります。 Webサーバー側で「Include」を使用しようとしましたが、実行時に失敗しました。

var query = myContext.Get_Table1(); 
query = query.Where(c => c.Part_ID == '12345'); 
LoadOperation<My.Web.Table1> loadOp = this.maxContextTransactionHistory.Load(query, QueryCompletedCallback, null); 
this.dataGrid.ItemsSource = loadOp.Entities; 

答えて

1

あなたはWCF RIAサービスを使用していると思いますか?これを示すためにあなたの質問にタグを付けると役に立ちました。

この場合、DomainServiceIncludeメソッドを使用して、クエリの結果に関連するエンティティを含める必要があります。

アソシエーションにもIncludeAttributeを適用して、クライアントにマーシャルされるようにする必要があります。属性は、hereに含まれる 'Buddy'クラスに適用できます。

理論的には、IcludeAttributeを生成されたエンティティクラス内のプロパティに直接適用すれば十分です。そこで、それらは上書きされます。

次の選択肢は、部分クラスになります。同じシグネチャで別のプロパティを追加すると(その属性を適用できるようになります)、元のプロパティと競合します。

解決策は、部分クラス内で定義された新しいクラスを使用することです。 MetadataType属性は、メタデータが定義されているクラスを示すために部分クラスで使用されます。

次のコードは、Part_StockのPart_Tableがクライアントに送信されたときにインクルードされるようにします。興味のある他のプロパティをカバーするには、同様のコードが必要です。

[MetadataTypeAttribute(typeof(Part_Stock.Metadata))] 
public partial class Part_Stock 
{ 

    internal sealed class Metadata 
    { 
     // Metadata classes are not meant to be instantiated. 
     private Metadata() 
     { 
     } 

     [Include] 
     public EntityCollection<Stock_Table> Stock_Table { get; set; } 
    } 
} 
+0

ありがとうございました。エンティティファイルに 'Include()'を追加しますが、ファイル(metadata.csファイル)に 'IncludeAttribute'パートを追加する方法がわかりませんでしたか? IncludeAttributeパートの追加の詳細を教えてください。あなたの助けに感謝。これは 'Include()'部分です:return this.ObjectContext.Part_Stock.Include( "Part_Table")。Include( "Part_Table.Part_Description"); –

+0

'Buddy'クラスのコードを追加しました。 –

関連する問題