entity framework - AutoMapper with EF6 not populating one of the mapped objects -


i have ef6 mvc app using code first generate models. trying create mapping using automapper between model , viewmodel representation of model.

i don't have errors, resulting object missing details ptcredential object. missing ptcredential object nested within ptcredential. don't believe ignores causing this, can't pin down. have tried suggestions other posts on automapper, nothing has proven useful.

could provide assistance on can use automapper in situation?

here code how configuring , initializing mapper:

    var ptconnections = _db.ptconnections.include(p => p.ptconnectionclass).tolist();          mapper.initialize(cfg =>         {             cfg.createmap<ptconnection, ptconnectionviewmodel>()                 .aftermap((s, d) => { foreach (var in d.ptcredentialassignments) i.ptconnection = d; });              cfg.createmap<ptcredentialassignment, ptcredentialassignmentviewmodel>()                 .formember(m => m.ptcredential, opt => opt.ignore())                 .formember(m => m.ptconnection, opt => opt.ignore());              cfg.createmap<ptvendor, ptvendorviewmodel>()                 .formember(m => m.ptcredentials, opt => opt.ignore())                 .formember(m => m.ptconnections, opt => opt.ignore());              cfg.createmap<ptcredential, ptcredentialviewmodel>();              cfg.createmap<ptconnectionclass, ptconnectionclassviewmodel>()                 .formember(m => m.ptconnections, opt => opt.ignore());              cfg.createmap<ptconnectioncontactassignment, ptconnectioncontactassignmentviewmodel>()                 .formember(m => m.ptconnection, opt => opt.ignore());          });      var dest = mapper.map<list<ptconnection>, list<ptconnectionviewmodel>>(ptconnections); 

here code first model:

public partial class ptconnection {     [system.diagnostics.codeanalysis.suppressmessage("microsoft.usage", "ca2214:donotcalloverridablemethodsinconstructors")]     public ptconnection()     {         ptconnectionassignments = new hashset<ptconnectionassignment>();         ptcredentialassignments = new hashset<ptcredentialassignment>();         ptconnectioncontactassignments = new hashset<ptconnectioncontactassignment>();     }      [key]     public int ptcid { get; set; }      [column(typename = "datetime2")]     public datetime modifieddate { get; set; }      [required]     [stringlength(500)]     public string modifiedby { get; set; }      [required]     [stringlength(255)]     public string connectionname { get; set; }      [required]     [stringlength(100)]     public string host { get; set; }      public int port { get; set; }      public string comment { get; set; }      public int ptccid { get; set; }      public bool? isdisabled { get; set; }      public int ptvid { get; set; }      public virtual ptconnectionclass ptconnectionclass { get; set; }      [system.diagnostics.codeanalysis.suppressmessage("microsoft.usage", "ca2227:collectionpropertiesshouldbereadonly")]     public virtual icollection<ptconnectionassignment> ptconnectionassignments { get; set; }      [system.diagnostics.codeanalysis.suppressmessage("microsoft.usage", "ca2227:collectionpropertiesshouldbereadonly")]     public virtual icollection<ptcredentialassignment> ptcredentialassignments { get; set; }      public virtual ptvendor ptvendor { get; set; }      [system.diagnostics.codeanalysis.suppressmessage("microsoft.usage", "ca2227:collectionpropertiesshouldbereadonly")]     public virtual icollection<ptconnectioncontactassignment> ptconnectioncontactassignments { get; set; } }  public partial class ptcredential {     [system.diagnostics.codeanalysis.suppressmessage("microsoft.usage", "ca2214:donotcalloverridablemethodsinconstructors")]     public ptcredential()     {         ptcredentialassignments = new hashset<ptcredentialassignment>();         ptcredentialcontactassignments = new hashset<ptcredentialcontactassignment>();     }      [key]     public int ptcrid { get; set; }      [column(typename = "datetime2")]     public datetime modifieddate { get; set; }      [required]     [stringlength(500)]     public string modifiedby { get; set; }      [required]     [stringlength(100)]     public string credusername { get; set; }      [required]     [stringlength(500)]     public string credpassword { get; set; }      public string directory { get; set; }      public bool? isdisabled { get; set; }      public string comments { get; set; }      public int? ptvid { get; set; }      [system.diagnostics.codeanalysis.suppressmessage("microsoft.usage", "ca2227:collectionpropertiesshouldbereadonly")]     public virtual icollection<ptcredentialassignment> ptcredentialassignments { get; set; }      public virtual ptvendor ptvendor { get; set; }      [system.diagnostics.codeanalysis.suppressmessage("microsoft.usage", "ca2227:collectionpropertiesshouldbereadonly")]     public virtual icollection<ptcredentialcontactassignment> ptcredentialcontactassignments { get; set; } }  public partial class ptvendor {     [system.diagnostics.codeanalysis.suppressmessage("microsoft.usage", "ca2214:donotcalloverridablemethodsinconstructors")]     public ptvendor()     {         ptconnections = new hashset<ptconnection>();         ptcredentials = new hashset<ptcredential>();         ptineligablecredentialvendorassignments = new hashset<ptineligablecredentialvendorassignment>();         ptvendorassignments = new hashset<ptvendorassignment>();         ptvendorcontactassignments = new hashset<ptvendorcontactassignment>();     }      [key]     public int ptvid { get; set; }      [column(typename = "datetime2")]     public datetime modifieddate { get; set; }      [required]     [stringlength(500)]     public string modifiedby { get; set; }      [required]     [stringlength(50), display(name="vendor name")]     public string name { get; set; }      [system.diagnostics.codeanalysis.suppressmessage("microsoft.usage", "ca2227:collectionpropertiesshouldbereadonly")]     public virtual icollection<ptconnection> ptconnections { get; set; }      [system.diagnostics.codeanalysis.suppressmessage("microsoft.usage", "ca2227:collectionpropertiesshouldbereadonly")]     public virtual icollection<ptcredential> ptcredentials { get; set; }      [system.diagnostics.codeanalysis.suppressmessage("microsoft.usage", "ca2227:collectionpropertiesshouldbereadonly")]     public virtual icollection<ptineligablecredentialvendorassignment> ptineligablecredentialvendorassignments { get; set; }      [system.diagnostics.codeanalysis.suppressmessage("microsoft.usage", "ca2227:collectionpropertiesshouldbereadonly")]     public virtual icollection<ptvendorassignment> ptvendorassignments { get; set; }      [system.diagnostics.codeanalysis.suppressmessage("microsoft.usage", "ca2227:collectionpropertiesshouldbereadonly")]     public virtual icollection<ptvendorcontactassignment> ptvendorcontactassignments { get; set; } }  [table("ptcredentialassignment")] public partial class ptcredentialassignment {     [key]     public int ptcraid { get; set; }      [column(typename = "datetime2")]     public datetime modifieddate { get; set; }      [required]     [stringlength(500)]     public string modifiedby { get; set; }      public int ptcid { get; set; }      public int ptcrid { get; set; }      public virtual ptconnection ptconnection { get; set; }      public virtual ptcredential ptcredential { get; set; } }  [table("ptconnectionclass")] public partial class ptconnectionclass {     [system.diagnostics.codeanalysis.suppressmessage("microsoft.usage", "ca2214:donotcalloverridablemethodsinconstructors")]     public ptconnectionclass()     {         ptconnections = new hashset<ptconnection>();     }      [key]     public int ptccid { get; set; }      [column(typename = "datetime2")]     public datetime modifieddate { get; set; }      [required]     [stringlength(500)]     public string modifiedby { get; set; }      [required]     [stringlength(50)]     public string class { get; set; }      [system.diagnostics.codeanalysis.suppressmessage("microsoft.usage", "ca2227:collectionpropertiesshouldbereadonly")]     public virtual icollection<ptconnection> ptconnections { get; set; } }  [table("ptconnectioncontactassignment")] public partial class ptconnectioncontactassignment {     [key]     public int ptccaid { get; set; }      [column(typename = "datetime2")]     public datetime modifieddate { get; set; }      [required]     [stringlength(500)]     public string modifiedby { get; set; }      public int ptcid { get; set; }      [required]     [stringlength(60)]     public string firstname { get; set; }      [required]     [stringlength(60)]     public string lastname { get; set; }      [required]     [stringlength(10)]     public string phonenumber { get; set; }      [stringlength(20)]     public string extension { get; set; }      [stringlength(100)]     public string email { get; set; }      [stringlength(60)]     public string title { get; set; }      public string comment { get; set; }      public virtual ptconnection ptconnection { get; set; } } 

here viewmodel:

   public partial class ptconnectionviewmodel     {         [key]         public int ptcid { get; set; }          [column(typename = "datetime2")]         public datetime modifieddate { get; set; }          [required]         [stringlength(500)]         public string modifiedby { get; set; }          [required]         [stringlength(255)]         public string connectionname { get; set; }          [required]         [stringlength(100)]         public string host { get; set; }          public int port { get; set; }          public string comment { get; set; }          public int ptccid { get; set; }          public bool? isdisabled { get; set; }          public int ptvid { get; set; }          public virtual ptconnectionclassviewmodel ptconnectionclass { get; set; }          public virtual icollection<ptconnectionassignmentviewmodel> ptconnectionassignments { get; set; }          public virtual icollection<ptcredentialassignmentviewmodel> ptcredentialassignments { get; set; }          public virtual ptvendorviewmodel ptvendor { get; set; }          public virtual icollection<ptconnectioncontactassignmentviewmodel> ptconnectioncontactassignments { get; set; }     }  public partial class ptvendorviewmodel {     [key]     public int ptvid { get; set; }      [column(typename = "datetime2")]     public datetime modifieddate { get; set; }      [required]     [stringlength(500)]     public string modifiedby { get; set; }      [required]     [stringlength(50), display(name="vendor name")]     public string name { get; set; }      public virtual icollection<ptconnectionviewmodel> ptconnections { get; set; }      public virtual icollection<ptcredentialviewmodel> ptcredentials { get; set; }  }  public partial class ptcredentialviewmodel {     [key]     public int ptcrid { get; set; }      [column(typename = "datetime2")]     public datetime modifieddate { get; set; }      [required]     [stringlength(500)]     public string modifiedby { get; set; }      [required]     [stringlength(100)]     public string credusername { get; set; }      [required]     [stringlength(500)]     public string credpassword { get; set; }      public string directory { get; set; }      public bool? isdisabled { get; set; }      public string comments { get; set; }      public int? ptvid { get; set; }      public virtual icollection<ptcredentialassignmentviewmodel> ptcredentialassignments { get; set; }      public virtual ptvendorviewmodel ptvendor { get; set; }      public virtual icollection<ptcredentialcontactassignmentviewmodel> ptcredentialcontactassignments { get; set; } }  public partial class ptcredentialassignmentviewmodel {     [key]     public int ptcraid { get; set; }      [column(typename = "datetime2")]     public datetime modifieddate { get; set; }      [required]     [stringlength(500)]     public string modifiedby { get; set; }      public int ptcid { get; set; }      public int ptcrid { get; set; }      public virtual ptconnectionviewmodel ptconnection { get; set; }      public virtual ptcredentialviewmodel ptcredential { get; set; } }  public partial class ptconnectionclassviewmodel {      [key]     public int ptccid { get; set; }      [column(typename = "datetime2")]     public datetime modifieddate { get; set; }      [required]     [stringlength(500)]     public string modifiedby { get; set; }      [required]     [stringlength(50)]     public string class { get; set; }      public virtual icollection<ptconnectionviewmodel> ptconnections { get; set; } }  public partial class ptconnectioncontactassignmentviewmodel {     [key]     public int ptccaid { get; set; }      [column(typename = "datetime2")]     public datetime modifieddate { get; set; }      [required]     [stringlength(500)]     public string modifiedby { get; set; }      public int ptcid { get; set; }      [required]     [stringlength(60)]     public string firstname { get; set; }      [required]     [stringlength(60)]     public string lastname { get; set; }      [required]     [stringlength(10)]     public string phonenumber { get; set; }      [stringlength(20)]     public string extension { get; set; }      [stringlength(100)]     public string email { get; set; }      [stringlength(60)]     public string title { get; set; }      public string comment { get; set; }      public virtual ptconnectionviewmodel ptconnection { get; set; } } 

here mapping made solution work:

       cfg.createmap<ptconnection, ptconnectionviewmodel>()             .aftermap((s, d) => { foreach (var in d.ptcredentialassignments) i.ptconnection = d; });          cfg.createmap<ptcredentialassignment, ptcredentialassignmentviewmodel>()             .formember(m => m.ptconnection, opt => opt.ignore());          cfg.createmap<ptvendor, ptvendorviewmodel>()             .formember(m => m.ptcredentials, opt => opt.ignore())             .formember(m => m.ptconnections, opt => opt.ignore());          cfg.createmap<ptcredential, ptcredentialviewmodel>()             .formember(m => m.ptcredentialassignments, opt => opt.ignore())             .formember(m => m.ptcredentialcontactassignments, opt => opt.ignore());          cfg.createmap<ptconnectionclass, ptconnectionclassviewmodel>()             .formember(m => m.ptconnections, opt => opt.ignore());          cfg.createmap<ptconnectioncontactassignment, ptconnectioncontactassignmentviewmodel>()             .formember(m => m.ptconnection, opt => opt.ignore()); 

Comments

Popular posts from this blog

javascript - Thinglink image not visible until browser resize -

firebird - Error "invalid transaction handle (expecting explicit transaction start)" executing script from Delphi -

mongodb - How to keep track of users making Stripe Payments -