2012-02-22 4 views
0

私は2つのテーブル/エンティティUsersCompaniesを持っています。 どちらもm-n関係にリンクされています。 これらのテーブルをEDMXで使用してPOCOを生成すると、m-nマッピングテーブルが消えます(2つのPKを除いては何もそこにないようです)。EF 4.1とLINQを使用して関連のないエンティティを見つける

代わりに、ナビゲーションプロパティは結構ですEDMX、によって作成されます:

user.Companies ... -> gives me all users for that company 

company.Users ... -> gives me all companies for that user 

しかしそれらに関連会社を持っていない私が望んでいた場合は、すべてのユーザー? 欠落しているテーブルにアクセスして適切な結合を作成する方法を教えてください。

答えて

1

(あなたが言ったように)そのuse.Companies.Countがゼロでなければなりませんので、あなただけの(以下であるもののように)LINQにこれを変換し、会社なしでユーザーを検索する必要があります

var withoutCompanyUsers = Users.Where(x=>x.Companies.Count() == 0).ToList(); 

編集:あなたの2番目の問題について:しかし、もし特定のユーザーに関連していないすべてのコマーシャルが欲しいのであれば?この場合

あなたは、特定のユーザーを持っていない企業を見つける必要があります:

var companies = Companies.Where(x=>!x.Users.Any(y=>y.ID == givenUser.ID)).ToList(); 
+0

:特定のユーザーのない

company.Users.Any(x=>x.ID = givenUserID) 

フェッチ企業:

チェックする同社は、特定のユーザーかどうかを持っています面白い。しかし、特定のユーザーに関連付けられていないすべてのコピアニが必要な場合はどうすればよいですか? x.Companiesエンティティの企業は、マッピングテーブルにまったく含まれていないため、見つからないでしょう。 – John

+0

@John、あなたはできます: 'Companies.Where(x =>!x.Users.Any(y => y.ID == givenUser.ID);'あなたの状況を説明する答えを編集します。 –

+0

ありがとう実際に割り当てられたユーザが "割り当てられていない"と返されることを意味しますか? – John

関連する問題