MVC4 で EF を使用する 2 つのデータベースがあります。私は利用するためにSO全体を検索しました。アラートのリストを部分ビューに戻す必要があります。ただし、アラートは、特定の識別子を持つ特定のユーザー名でフィルタリングする必要があります。ビューは強く型付けされているので、そのままにしておきたいと思います。
リストに戻るLINQクエリがあり、それは特定のIDに関連付けられたユーザー名のリストです。2 番目の case ステートメントで、2 つのテーブル ルックアップが必要な場所を確認できます。ビューモデル クラスを使用せずにこれを実行したいと考えています。
コードは次のとおりです。
public PartialViewResult DashboardAlerts()
{
Database.SetInitializer<AlertsContext>(null);
AlertsContext db = new AlertsContext();
Database.SetInitializer<MemberUsersContext>(null);
MemberUsersContext mdb = new MemberUsersContext();
var members = new List<MemberUsers>(mdb.MemberUsers);
var alerts = new List<Alerts>(db.Alerts);
var query = from x in alerts
join y in members
on x.username equals y.username
where y.clubID == (int)Session["ClubID"]
select new { username = y.username};
var list = query.ToList();
switch (Session["RoleName"].ToString())
{
case "GMC Admin": return PartialView(db.Alerts.ToList());
case "Club Admin": return //return db.Alerts.ToList() that has only usernames from query.ToList();
default: return PartialView(db.Alerts.Where(x => x.username == User.Identity.Name).ToList());
}
}
結論: クエリ リストのユーザー名プロパティの値のみを使用して db.Alerts を相互参照したいと考えています。