2016-05-05 11 views
0

Dafür habe ich 3 Modelle: Krankenhäuser, AspNetUsers, UserHospitals.Konfigurieren viele zu viele Beziehung

das ist das UserHospitals Modell:

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; } 
} 

Mit ihm kann ich Benutzer-ID und Krankenhaus-ID zu dieser Tabelle hinzufügen.

Jetzt muss ich überprüfen, welche Krankenhäuser Benutzer angeschlossen ist.

Auf meinem Controller, die eine Krankenhausliste zurückgeben, muss ich nur Krankenhäuser, die Benutzer eine Verbindung haben, zurückgeben.

Diese zurück alle Krankenhäuser, wie kann ich es filtern, um nur anzuzeigen, wenn Benutzer eine Verbindung mit Krankenhaus auf UserHospitals haben?

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

Ich will nicht eine neue Ansichtsmodell hinzuzufügen, die Modelle verbinden oder was auch immer

== == EDIT

Krankenhaus Modell

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

Wie erhalten Sie die Verbindung des Benutzers zu einem Krankenhaus? Wenn seine UserHosipital-ID 'db.Hosipitals.where (h => h.UserHosipitalId == expectedId)' – Eldho

+0

Krankenhaus -> UserHospital -> Benutzer ist, habe ich keine direkte Verbindung zum Benutzer nach Krankenhaus-Modell. Sie können es auf meiner Bearbeitung sehen. –

Antwort

1

Try dies:

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

Das ist es! Vielen Dank! –

+0

Wenn Sie können, werfen Sie einen Blick auf [diese] (http://stackoverflow.com/questions/37053194/block-access-by-query-result) PLZ: –