当前位置:编程学习 > C#/ASP.NET >>

关于EmitMapper映射问题:不同类类型之间的映射

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 --------------------编程问答-------------------- 跪求各位大神回复啊。。 --------------------编程问答-------------------- 反射

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;

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

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;

 
}  --------------------编程问答-------------------- 反射怎么用,我不会啊。
在哪里加入上述代码呢?
EmitMapper.ObjectMapper<BookStore,BookStoreDTO> mapper = EmitMapper.ObjectMapperManager.DefaultInstance.
                    GetMapper<BookStore, BookStoreDTO>();
我构造了一个mapper,怎么为映射器mapper添加mapping这个反射?
本人愚笨,请大侠指明。。 --------------------编程问答--------------------
引用 5 楼 Mr_joy 的回复:
反射怎么用,我不会啊。
在哪里加入上述代码呢?
EmitMapper.ObjectMapper<BookStore,BookStoreDTO> mapper = EmitMapper.ObjectMapperManager.DefaultInstance.
                    GetMapper<BookStore, BookStoreDTO>(……

如果你用EmitMapper,就不能用反射了,说反射的都是不懂的人。

如果你不会映射,就别用EmitMapper了,那个映射其实就是自己构造一个关系函数(委托),让EmitMapper在赋值过程中调用你给的关系函数对特定属性进行赋值操作,如果你不给也可以,那么它就自动根据名称匹配创建这么一个关系函数,而创建过程是通过Emit来实现的,所以才叫EmitMapper。如果用了反射,那简直就是糟蹋了这个框架了。 --------------------编程问答-------------------- Emit,好东西,也是麻烦的东西 --------------------编程问答--------------------
引用 6 楼 qldsrx 的回复:
引用 5 楼 Mr_joy 的回复:反射怎么用,我不会啊。
在哪里加入上述代码呢?
EmitMapper.ObjectMapper<BookStore,BookStoreDTO> mapper = EmitMapper.ObjectMapperManager.DefaultInstance.
                    GetMapper<BookSto……

大侠,那emitmapper能不能很好地应用在EF中呢?
我遇到的最大的难题就在于:一个含有子表的实体如何利用emitmapper来映射呢?
还有就是如果子表内还有子表呢?
子表.toList->DTO.list
这个问题困扰了我很久了,我找不到方法来搞,但使用automapper就很简单,而automapper的性能比emitmapper低,所以我试着用emitmapper来替代它。请大侠赐教,谢谢。 --------------------编程问答--------------------      var mapper = 
         new ObjectMapperManager().GetMapper<BookStore, BookStoreDTO>(
             new DefaultMapConfig()
             .ConvertUsing<Book, BookDTO>(value => new BookDTO{ title = value.title })
             );
    BookStoreDTO BookStoreDTOobj= mapper.Map(BookStoreObj);
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,