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

Mr_joy 2013-01-14 04:10:00
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?
我对自定义映射不熟悉,用默认的映射又做不到,请大侠们写下代码和注释,谢谢
...全文
245 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxd402 2013-07-12
  • 打赏
  • 举报
回复
var mapper = new ObjectMapperManager().GetMapper<BookStore, BookStoreDTO>( new DefaultMapConfig() .ConvertUsing<Book, BookDTO>(value => new BookDTO{ title = value.title }) ); BookStoreDTO BookStoreDTOobj= mapper.Map(BookStoreObj);
niss 2013-01-17
  • 打赏
  • 举报
回复
Emit,好东西,也是麻烦的东西
qldsrx 2013-01-17
  • 打赏
  • 举报
回复
引用 5 楼 Mr_joy 的回复:
反射怎么用,我不会啊。 在哪里加入上述代码呢? EmitMapper.ObjectMapper<BookStore,BookStoreDTO> mapper = EmitMapper.ObjectMapperManager.DefaultInstance. GetMapper<BookStore, BookStoreDTO>(……
如果你用EmitMapper,就不能用反射了,说反射的都是不懂的人。 如果你不会映射,就别用EmitMapper了,那个映射其实就是自己构造一个关系函数(委托),让EmitMapper在赋值过程中调用你给的关系函数对特定属性进行赋值操作,如果你不给也可以,那么它就自动根据名称匹配创建这么一个关系函数,而创建过程是通过Emit来实现的,所以才叫EmitMapper。如果用了反射,那简直就是糟蹋了这个框架了。
Mr_joy 2013-01-17
  • 打赏
  • 举报
回复
引用 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来替代它。请大侠赐教,谢谢。
qldsrx 2013-01-15
  • 打赏
  • 举报
回复
映射关系太复杂的话,不如直接对其操作赋值,这个EmitMapper没用过,帮不上多少忙,虽然自己写过Emit,但是都是不需要任何配置的,那样才方便使用。
cchvsgame 2013-01-15
  • 打赏
  • 举报
回复
反射

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;


}
Mr_joy 2013-01-15
  • 打赏
  • 举报
回复
跪求各位大神回复啊。。
Mr_joy 2013-01-15
  • 打赏
  • 举报
回复
反射怎么用,我不会啊。 在哪里加入上述代码呢? EmitMapper.ObjectMapper<BookStore,BookStoreDTO> mapper = EmitMapper.ObjectMapperManager.DefaultInstance. GetMapper<BookStore, BookStoreDTO>(); 我构造了一个mapper,怎么为映射器mapper添加mapping这个反射? 本人愚笨,请大侠指明。。
luobing261314 2013-01-15
  • 打赏
  • 举报
回复
反射 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; }

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧