だから、それは私のモデルです..素敵で複雑です。
UserID でエリアを取得しようとしています。これを SQL で行う場合、Users テーブルまで一連の結合を行います。LINQ クエリ構文またはメソッド チェーンでこれをどのように行いますか?
これは逆に非常に簡単に行うことができますが、結果のグラフを平坦化するために多くの追加作業を行う必要があり、その間にあるすべてのエンティティを引き戻す必要もあります。
オプションで AreasPermissions と Permissions を含めることができれば、それは大変なことですが、この時点では、それらを取得するための追加のクエリを気にしません。
私が浮かんでいた別のオプションは、関数インポートを sproc に使用し、それを Area にマップすることでした..しかし、他のエンティティを含める必要がある場合、そのオプションはエレガントではなくなります。また、sproc を使用するためだけにsproc を使用することは避けようとしています。なぜなら、それは常に人々にとって滑りやすい坂道だからです..「あることに sproc を使用する」は、「何にも EF (テーブル アクセス) を使用しない」という形になりがちです。
var userByID = new Func<User, bool>(x => x.UserId.Equals(userID, StringComparison.InvariantCultureIgnoreCase));
var user = this._context.Users
.Include("TeamsUsers.Team.TeamsRoles.Role.RolesAreasPermissions.AreaPermission.Area")
.Include("TeamsUsers.Team.TeamsRoles.Role.RolesAreasPermissions.AreaPermission.Permission")
.Single(userByID);