ok having hard time converting model dto model , vice versa model valid when trying map "automapper.automappermappingexception' occurred in automapper.dll"
here model classes
public class category { public guid categoryid { get; set; } public string categoryname { get; set; } public virtual icollection<post> posts { get; set; } } public class post { public guid postid { get; set; } public string posttitle { get; set; } public string postmessage { get; set; } public string postimage { get; set; } public virtual icollection<tag> tags { get; set; } public guid category_id { get; set; } [foreignkey("category_id")] public virtual category category { get; set; } public virtual identityuser user { get; set; } } public class tag { public guid tagid { get; set; } public string tagname { get; set; } public virtual list<post> posts { get; set; } } and here dto's
public class tagdto { public guid tagid { get; set; } public string tagname { get; set; } public virtual ilist<postdto> posts { get; set; } } public class postdto { public guid postid { get; set; } public string posttitle { get; set; } public string postmessage { get; set; } public string postimage { get; set; } public virtual icollection<tagdto> tags { get; set; } [required] public guid category_id { get; set; } public virtual categorydto category { get; set; } public virtual identityuser user { get; set; } } and here i've been trying using automapper map between entities
public static tag tag_tomodel(this tagdto dto) { automapper.mapper.createmap<tagdto, tag>() .formember(post => post.posts, expr => expr.mapfrom(src => src.posts)) .constructusing(post => automapper.mapper.map<tag>(post.posts)); var model = automapper.mapper.map<tag>(dto); return model; } public static tagdto tag_todto(this tag model) { automapper.mapper.createmap<tag, tagdto>() .formember(post => post.posts, expr => expr.mapfrom(src => src.posts)) .constructusing(post => automapper.mapper.map<tagdto>(post.posts)); var dto = automapper.mapper.map<tagdto>(model); return dto; } public static post post_tomodel(this postdto dto) { automapper.mapper.createmap<postdto, post>() .formember(prop => prop.comments, expr => expr.mapfrom(src => src.comments)) .formember(prop => prop.tags, expr => expr.mapfrom(src => src.tags)) .constructusing(category => automapper.mapper.map<post>(category.category)) .constructusing(tag=>automapper.mapper.map<post>(tag.tags)); var model = automapper.mapper.map<post>(dto); return model; } public static postdto post_todto(this post model) { automapper.mapper.createmap<post, postdto>() .formember(prop => prop.comments, expr => expr.mapfrom(src => src.comments)) .formember(prop => prop.tags, expr => expr.mapfrom(src => src.tags) .constructusing(category => automapper.mapper.map<postdto>(category.category)) .constructusing(tag => automapper.mapper.map<postdto>(tag.tags)); var dto = automapper.mapper.map<postdto>(model); return dto; } public static category category_tomodel(this categorydto dto) { automapper.mapper.createmap<categorydto, category>() .formember(post => post.posts, expr => expr.mapfrom(src => src.posts)); var model = automapper.mapper.map<category>(dto); return model; } public static categorydto category_tomodel(this category model) { automapper.mapper.createmap<category, categorydto>() .formember(post => post.posts, expr => expr.mapfrom(src => src.posts)); var dto = automapper.mapper.map<categorydto>(model); return dto; } i'm out of ideas , haven't been able find tutorial on how map kind. think fact example in category , "post" not mapping should, still "post" has other navigation props identityuser, tag, comment, , category , entities have navigation props well. kind of configuration final i've benn trying others, time worked when used ignore() member, means thoes props not mapped. automapper users had kind of problem , willing help? thank you
you should call createmap when app starts up, global.asax.cs or similar. setup mappings once before trying map operations. need have mappings setup can map child properties, won't have call formember things posts.
oh , rid of construct using. use mapper.map.
Comments
Post a Comment