テーブルの単純なメンバーシップUserProfiles
に似ていますRoles
UserInRoles
このコードを使用UserProfiles
しClients
て、テーブル内のとの間の関係を作成しましたUserInClients
modelBuilder.Entity<UserProfiles>()
.HasMany<dbClient>(r => r.Clients)
.WithMany(u => u.UserProfiles)
.Map(m =>
{
m.ToTable("webpages_UsersInClients");
m.MapLeftKey("ClientId");
m.MapRightKey("UserId");
});
私UserProfiles
には がありpublic virtual ICollection<dbClient> Clients { get; set; }
、私にClients
は がありますpublic virtual ICollection<UserProfiles> UserProfiles { get; set; }
- モデルを見る必要がある場合は、投稿できることをお知らせください
モデルとビューで私がしたい
- すべてのクライアント ( Distinct ) を表示し、そのクライアントにアクセスできるユーザー数を表示します
- 現在ログインしているユーザーが表示を許可されているクライアントのみを表示するビューを作成します。
モデル Clients.ClientID のプロパティにアクセスするのと同じくらい簡単だと思っていました。うまくいかない。
私の他の考えは、(作成したテーブルのように) CliendID と UserID を含むモデルを作成していたので、コントローラーで結合を使用して正しい値を見つけることができますか??
最後に、私が達成しようとしているのはKendoUI
CascadingDropDownList
、この行をGetCascadeClients
JsonResult
return Json(db.Clients.Select(c => new { ClientID = c.ClientID, ClientName = c.Client }), JsonRequestBehavior.AllowGet);
私の質問は、コントローラーにいるとき、Entity Framework によって作成されたこのテーブルにどのようにアクセスするのですか?
編集:
SOLUTION QUERY両方の回答をつなぎ合わせる
return Json(db.Clients
.Include(c => c.UserProfiles)
.Where(c => c.UserProfiles.`Any(up => up.UserName == User.Identity.Name))`
.Select(c => new
{
ClientID = c.ClientID,
ClientName = c.Client,
UserCount = c.UserProfiles.Count()
}),
JsonRequestBehavior.AllowGet);