私はモデルのDocsにguid列author_idを持っています。これはMembershipUserを参照する必要があります。ASP.NET MVC:モデルとMembershipUsersの関係
私は標準MembershipProviderを使用しています(私はdb名のみ変更しました)。もちろん、MembershipUsersのモデルはありません。
DocsクラスのメンバーシップユーザーとMembershipUserのすべてのドキュメントを取得するには、いくつかのメソッドを簡単に定義できますが、いくつかのことは難しいです(ユーザーのリスト、各ユーザーのドキュメント数を表示します)。さらに、私はMVCを奇妙な方法で使用していると感じています。メンバーシップモデルを使用すると簡単になります。
この関係はどのように実装できますか? MembershipUsersのモデルを実装する必要がありますか?
おかげ
更新:私は全く明確ではありませんでした実現。
私のすべてのユーザーとそのドキュメントをリストしたいとします。これを行うための 一つの方法は次のとおりです。
ViewModel model = new ViewModel()
{
Users = from MembershipUser user in Membership.GetAllUsers(page, pagesize, out totalusers)
select new UserWithDocs
{
User = user,
Docs = context.Docs.Where(c => c.author_id == (Guid) user.ProviderUserKey)
},
UsersCount = totalusers
};
これは動作しますが、ユーザーごとに1つの別々のクエリを生成します。
ユーザーのGUIDの配列を取得してから、文書where author_id IN list_of_guids
をクエリできますが、手動で各文書を作成者に関連付ける必要があります。
もっと良い解決策はありますか?
あなたはすべてのユーザーとすべての文書をロードしようとしていますか?これは多くのデータのように聞こえる。ビューをユーザーのリストに分けて、選択したユーザーのドキュメントのリストにドリルダウンしてみましょう。あなたが指摘したように、2つのクエリでこれを行うには、foreachループを使用してドキュメントを手動でユーザーに関連付ける必要があります。 – Junto