什么是AutoMapper点? 可能有人给我一个非常简单的例子吗?
我看过它的视频,但它只是不点击。
山姆
什么是AutoMapper点? 可能有人给我一个非常简单的例子吗?
我看过它的视频,但它只是不点击。
山姆
通常AutoMapper是在数据实体和商业模式之间的映射很大。 例如,可以说,例如,我有一个数据域类型,称之为PersonEntity
,并且它具有属性的数组: FirstName
, Surname
, Gender
等。我不想公开我的数据域通过键入到消费应用程序,这样我就可以定义业务域类型,例如Person
,现在Person
类型可以包含其他业务逻辑,如GetRelatedPersons
等,这可能不被功能与您的数据域。 在这种情况下,我有两种类型, PersonEntity
和Person
这在某些时候我会写样板代码的特性从一个到另一个复制。 我可以这样做多种方式,我可以:
1.复印构造函数:
public Person(PersonEntity entity) {
2.Generalised映射方法:
public Person CreatePerson(PersonEntity entity) {
3.Implicit /显式转换:
public static implicit operator Person(PersonEntity entity) {
但是AutoMapper允许你这样做,是很容易地创建这两种类型之间的映射过程。 因此,在其simiplist形式,我可以:
Person person = Mapper.Map<PersonEntity, Person>(entity);
通过使用约定优先的方法,该AutoMapper框架将转化匹配从一个实例到下一个属性。 它还可以让你自定义如何,如果你想要更多的细粒度控制的类型映射。
希望帮助。
在ASP.NET MVC(因为你已经标记的是),AutoMapper使得映射你的的ViewModels到您的域模型的痛苦任务(如实体框架POCO的,LINQ到SQL类)容易得多。
大多数时候,我们的ViewModels包含很多实体,所以我们不能简单地做context.AddObject(viewModel)
。 通常我们必须掰开视图模型,做多的增加,等等。
本手册拼接让你的控制器“胖”,这是它应该是什么相反。
输入AutoMapper。
这是一个很好/简单的例子, 在这里在这里以上。
假设你有两个班
class A
{
public string MyName;
public string MyAge;
}
class B
{
public string MyViewsName;
public string MyViewsAge;
}
我要说,(A是源,B是目标。)
Map<A,B>().ForMember(dest => dest.MyViewsName, o => o.MapFrom(src => src.MyName))
.ForMember(dest => dest.MyViewsAge, o => o.MapFrom(src => src.MyAge));
所以现在我可以有一些填充属性的对象,并说
var myBobject = MyMap.Map(MyAObject, new B());
现在的属性得到映射到对象为您提供:d
其看中的拷贝构造函数,如果您熟悉C ++:d,希望帮助