1

データベースから生成された Entity Framework があります。このデータベース内には、Employee_ID と User_Name の 2 つのフィールドで構成される User_Security_Role というテーブルがあります。どちらのフィールドも主キーとして機能し、外部キーでもあります。フィールドは、Sytem_Role (PK として Role_ID を持つ) と User_Identity (PK として User_Name を持つ) の 2 つのテーブルからのものです。.edmx ファイルが生成されると、User_Security_Role テーブルはテーブルとしてではなく、System_Role と User_Identity の 2 つのエンティティ間の関連付けセットとして生成されます。

次のクエリで EF をクエリしたいと思います。

var usr = from u in _imEntities.User_Security_Role
          where u.Role_ID == 3
          select u.User_Name;

ただし、「User_Security_Role」はエンティティ セット内のエンティティとして表示されず、アソシエーション セットであるためクエリを実行する方法がわかりません。エンティティではなく関連付けからデータを選択する linq クエリを作成するにはどうすればよいですか?

4

1 に答える 1

0

EF が User_Security_Role テーブルを多対多の関係で不要なテーブルとして識別したようです (おそらくそうです)。この場合、クエリを次のいずれかとして記述します。

var usr = From u in _imEntities.User_Identities
          where u.Roles.Any(r => r.Role_ID == 3)
          select u;

また

var usr = from r in _imEntities.System_Roles
          where r.Role_ID == 3
          from u in r.UserSecurities
          select u;
于 2013-02-15T18:06:43.363 に答える