2016-05-05 16 views
0

これには病院、AspNetUsers、UserHospitalsという3つのモデルがあります。多対多関係を設定する

これはUserHospitalsモデルです:

それで
public class UserHospital 
{ 
    [Key] 
    public int UserHospitalID { get; set; } 

    public int HospitalID { get; set; } 
    public Hospital Hospitals { get; set; } 

    public string Id { get; set; } 
    public ApplicationUser Users { get; set; } 
} 

私はこのテーブルにユーザーIDと病院のIDを追加することができます。

今、私はどの病院が接続しているかを確認する必要があります。

病院のリストを返す私のコントローラでは、私は病院に返す必要があります、ユーザーは接続している。

これはすべての病院を返します。ユーザーがUserHospitalsの病院に接続している場合にのみ表示するにはどうすればよいですか?私がモデルに加わる新しいのviewmodelまたは何

== EDITの==

病院モデル

public class Hospital 
{ 
    [Key] 
    public int HospitalID { get; set; } 

    public string Name { get; set; } 

    public virtual ICollection<HospitalSpeciality> HospitalSpecialities { get; set; } 
    public virtual ICollection<UserHospital> UserHospitals { get; set; } 
} 

enter image description here

+0

どのようにユーザーを病院につなぎますか? UserHosipital IDが 'db.Hosipitals.where(h => h.UserHosipitalId == expectedId)' – Eldho

+0

Hospital - > UserHospital - > Userの場合、私は病院モデルによるユーザーの直接接続はありません。あなたは私の編集でそれを見ることができます。 –

答えて

1

てみてくださいを追加したくない

public ActionResult Index() 
    { 
     return View(db.Hospitals.ToList()); 
    } 

これは:

public ActionResult Index() 
{ 
    var result =db.Hospitals.Include("UserHospitals").where(x=> x.UserHospitals.Any(x=>x.Id== userId)).ToList(); 
    return View(result); 
} 
+0

それはそれです!ありがとう! –

+0

可能であれば、[this](http://stackoverflow.com/questions/37053194/block-access-by-query-result)をご覧ください。plz: –