asp.net mvc - Many to Many Relationship in MVC 5 EF6 -


im using mvc 5 , ef 6.

there 3 tables in code: "leads", "phones", "leadstatus" , junction table "leadphones". want show following properties in index view:

leads.fullname leadstatus.status phones.phoneid 

how should configure leadcontroller?

public partial class leads {     public leads()     {         this.leadphones = new hashset<leadphones>();     }      [key]     public int leadid { get; set; }     public string title { get; set; }     public string firstname { get; set; }     public string lastname { get; set; }     public string fullname { { return nameprefix + " " + firstname + " " + lastname; } }     public int leadstatusid { get; set; }       public virtual leadstatus leadstatus { get; set; }     public virtual icollection<leadphones> leadphones { get; set; } } 

and

public partial class phones {     public phones()     {         this.accountphones = new hashset<accountphones>();         this.contactphones = new hashset<contactphones>();         this.employeephones = new hashset<employeephones>();         this.leadphones = new hashset<leadphones>();     }      [key]     public int phoneid { get; set; }                public string phoneno { get; set; }      public virtual icollection<leadphones> leadphones { get; set; } } 

and

public partial class leadphones {     [key]     public int leadphoneid { get; set; }     public int leadid { get; set; }     public int phoneid { get; set; }      public virtual leads leads { get; set; }     public virtual phones phones { get; set; } } 

and

public partial class leadstatus {     public leadstatus()     {         this.leads = new hashset<leads>();     }      [key]     public int leadstatusid { get; set; }     public string status { get; set; }      public virtual icollection<leads> leads { get; set; } } 

the following not work:

    public actionresult index()     {                     var leads = db.leads.include(l => l.leadstatus).include(l => l.leadphones);                                 return view(leads);     } 

the main problem "phoneno". how junction table?

remove leadphoneid column leadphones table -- isn't necessary , cause problems you. remove references leadphones in classes. leads virtual property phones (not leadphones). leadphones has virtual property leads (not leadphones).

after that, should able to:

var leads = db.leads.include(l => l.leadstatus).include(l => l.phones);  public partial class lead {     public lead()     {         this.phones = new hashset<phone>();     }      [key]     public int leadid { get; set; }     public string title { get; set; }     public string firstname { get; set; }     public string lastname { get; set; }     public string fullname { { return nameprefix + " " + firstname + " " + lastname; } }     public int leadstatusid { get; set; }       public virtual leadstatus leadstatus { get; set; }     public virtual icollection<phone> phones { get; set; } }   public partial class phone {     public phone()     {         this.accountphones = new hashset<accountphones>();         this.contactphones = new hashset<contactphones>();         this.employeephones = new hashset<employeephones>();         this.leads = new hashset<lead>();     }      [key]     public int phoneid { get; set; }                public string phoneno { get; set; }      public virtual icollection<lead> leads { get; set; } }    public partial class leadstatus {     public leadstatus()     {         this.leads = new hashset<lead>();     }      [key]     public int leadstatusid { get; set; }     public string status { get; set; }      public virtual icollection<lead> leads { get; set; } } 

i've corrected plurality of classes. lead vs leads. class describes single lead, should called lead not leads. phone vs phones.


Comments