public class BookStoreDTO
{
   public string name {get;set;}
   public List<BookDTO> books {get;set;}
   public Address address {get;set;}
}
public class BookStore
{
   public string name {get;set;}
   public List<Book> books {get;set;}
   public Address address {get;set;}
}
public class BookDTO
{
   public string title {get;set;}
   ....
}
public class Book
{
   public string title {get;set;}
   .....
}
public class Address
{
   public string contry {get;set;}
   ....
}
问题:
我想把BookStoreDTO映射到BookStore中,但不会把List<BookDTO>映射到List<Book>中,
是不是需要自定义Mappingconfiguration?
我对自定义映射不熟悉,用默认的映射又做不到,请大侠们写下代码和注释,谢谢emitmapper映射DTO

解决方案 »

  1.   

    反射List<Book>  Maping(List<BookDTO> source)
    {
    List<Book> rs=new List<Book> ();
    for each(BookDTO b in source)
    {
       Book k=new Book();
       //一种用反射 给k赋值    .getType).GetProps();
      //一种直接赋值也行   rs.add (k);
    }return rs; 
    }
      

  2.   

    映射关系太复杂的话,不如直接对其操作赋值,这个EmitMapper没用过,帮不上多少忙,虽然自己写过Emit,但是都是不需要任何配置的,那样才方便使用。
      

  3.   

    反射List<Book>  Maping(List<BookDTO> source)
    {
    List<Book> rs=new List<Book> ();
    for each(BookDTO b in source)
    {
       Book k=new Book();
       //一种用反射 给k赋值    .getType).GetProps();
      //一种直接赋值也行   rs.add (k);
    }return rs; 
      

  4.   

    反射怎么用,我不会啊。
    在哪里加入上述代码呢?
    EmitMapper.ObjectMapper<BookStore,BookStoreDTO> mapper = EmitMapper.ObjectMapperManager.DefaultInstance.
                        GetMapper<BookStore, BookStoreDTO>();
    我构造了一个mapper,怎么为映射器mapper添加mapping这个反射?
    本人愚笨,请大侠指明。。
      

  5.   

    如果你用EmitMapper,就不能用反射了,说反射的都是不懂的人。如果你不会映射,就别用EmitMapper了,那个映射其实就是自己构造一个关系函数(委托),让EmitMapper在赋值过程中调用你给的关系函数对特定属性进行赋值操作,如果你不给也可以,那么它就自动根据名称匹配创建这么一个关系函数,而创建过程是通过Emit来实现的,所以才叫EmitMapper。如果用了反射,那简直就是糟蹋了这个框架了。
      

  6.   

    大侠,那emitmapper能不能很好地应用在EF中呢?
    我遇到的最大的难题就在于:一个含有子表的实体如何利用emitmapper来映射呢?
    还有就是如果子表内还有子表呢?
    子表.toList->DTO.list
    这个问题困扰了我很久了,我找不到方法来搞,但使用automapper就很简单,而automapper的性能比emitmapper低,所以我试着用emitmapper来替代它。请大侠赐教,谢谢。
      

  7.   

         var mapper = 
             new ObjectMapperManager().GetMapper<BookStore, BookStoreDTO>(
                 new DefaultMapConfig()
                 .ConvertUsing<Book, BookDTO>(value => new BookDTO{ title = value.title })
                 );
        BookStoreDTO BookStoreDTOobj= mapper.Map(BookStoreObj);