标签: automapper

如何使用AutoMapper .ForMember?

我正在尝试设置AutoMapper以从实体转换为DTO.我知道我应该使用.ForMember()Mapper.CreateMap<Entity, DTO>()设置自定义映射,但是这似乎并没有成为一个有效的方法.

编辑以供澄清:我不是要查找我已阅读的文档的链接,或者是基本语法的解释.我正在使用答案和文档中描述的正确语法,例如:

Mapper.CreateMap<EFAddress, Address>()
      .ForMember(dest => dest.Code, opt => opt.MapFrom(src => src.Name));
Run Code Online (Sandbox Code Playgroud)

如果我在CreateMap <>中有一个无效的类型名称,我可以看到"ForMember"作为一个有效的方法,鼠标悬停显示方法签名,正如我通常所期望的那样.但是,只要我给它两个有效类型,ForMember说它无法解析符号,就好像该方法不可用一样.

对于我没有遇到的泛型类,是否存在某种约束?

谢谢

.net automapper

78
推荐指数
3
解决办法
7万
查看次数

NuGet包管理器:'AutoMapper'已经为'Microsoft.CSharp'定义了一个依赖项

我试图在Visual Studio Premium 2012上使用NuGet将AutoMapper添加为项目的依赖项,但它失败了.

它说:

操作失败
'AutoMapper'已经为'Microsoft.CSharp'定义了依赖关系.

我可以添加其他依赖项.

我正在使用VS 2012的最新版本的软件包管理器:

NuGet包管理器2.8.60318.667

任何想法我应该检查什么?

c# automapper nuget visual-studio-2012

76
推荐指数
5
解决办法
7万
查看次数

使用Automapper映射列表

我有课:

public class Person{ /* Props here */ }

public class PersonViewModel { /* Props here */ }
Run Code Online (Sandbox Code Playgroud)

然后是清单:

List<Person> people = new List<Person>();
List<PersonViewModel> peopleVM = Mapper
                                .MapList<Person, PersonViewModel>(people); //Problem here.
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?

asp.net-mvc automapper

65
推荐指数
3
解决办法
8万
查看次数

如何忽略所有目标成员,除了映射的成员?

有没有办法做到这一点?我们有一个SummaryDto,它映射了三种不同的类型,当我们为每种类型创建一个map时,未映射的props会抛出错误.摘要dto上有大约35个属性.要在每个上使用Ignore()选项太麻烦了.全球忽视了吗?就像是

CreateMap<Source,Target>()
   .IgnoreAllUnmapped();
Run Code Online (Sandbox Code Playgroud)

c# automapper

64
推荐指数
3
解决办法
6万
查看次数

自动映像丢失类型映射配置或不支持的映射?

实体模型

public partial class Categoies
{
    public Categoies()
    {
        this.Posts = new HashSet<Posts>();
    }

    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public Nullable<int> PositionId { get; set; }

    public virtual CategoryPositions CategoryPositions { get; set; }
    public virtual ICollection<Posts> Posts { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

查看模型

public class CategoriesViewModel
{
    public int Id { get; set; }

    [Required(ErrorMessage = "{0} alan? bo? b?rak?lmamal?d?r!")]
    [Display(Name = "Kategori …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc automapper

64
推荐指数
9
解决办法
14万
查看次数

将对象复制到对象(使用Automapper?)

我有一节课:

public class Person {
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我有两个Person实例(person1和person2).我想将person2的内容复制到person1.我想在一个指令中制作此副本,而不是按属性制作属性:

person1.LastName = person2.LastName;
Run Code Online (Sandbox Code Playgroud)

在doc中,我看到将对象复制到另一个对象但类型不同.如何在类型相同时复制对象?

c# automapper

63
推荐指数
4
解决办法
4万
查看次数

Automapper - 多对象源和一个目标

我使用自动映射器来映射多个对象(db类到ui对象).

地图1:

Mapper.CreateMap<sourceone, destination>().ForMember(sss => sss.one, m => m.MapFrom(source => source.abc));
Run Code Online (Sandbox Code Playgroud)

地图2:

Mapper.CreateMap<sourcetwo, destination>().ForMember(sss => sss.two, m => m.MapFrom(source => source.xyz));

destination d = new destination();
Run Code Online (Sandbox Code Playgroud)

//地图1

d = AutoMapper.Mapper.Map<sourceone, destination>(sourceone);
Run Code Online (Sandbox Code Playgroud)

//地图2

d = AutoMapper.Mapper.Map<sourcetwo, destination>(sourcetwo);
Run Code Online (Sandbox Code Playgroud)

一旦我调用'Map 2',使用Map 1填充的值就会丢失..(即destination.one变空).我该如何解决?

c# asp.net-mvc automapper

59
推荐指数
6
解决办法
3万
查看次数

AutoMapper从多个来源转换

假设我有两个模型类:

public class People {
   public string FirstName {get;set;}
   public string LastName {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

还有一类电话:

public class Phone {
   public string Number {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我想转换为PeoplePhoneDto,如下所示:

public class PeoplePhoneDto {
    public string FirstName {get;set;}
    public string LastName {get;set;}
    public string PhoneNumber {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

让我们在我的控制器中说:

var people = repository.GetPeople(1);
var phone = repository.GetPhone(4);

// normally, without automapper I would made
return new PeoplePhoneDto(people, phone) ;
Run Code Online (Sandbox Code Playgroud)

我似乎找不到这个场景的任何例子.这可能吗 ?

注意:示例不是真实的,仅针对此问题.

c# automapper

59
推荐指数
4
解决办法
4万
查看次数

AutoMapper的替代品

除了AutoMapper之外,.NET中的对象到对象映射有哪些不同的替代框架

目前我们计划使用AutoMapper,但在最终确定此框架之前,我们希望了解其他任何框架.

.net automapper

58
推荐指数
4
解决办法
3万
查看次数

Automapper:使用ReverseMap()和ForMember()进行双向映射

我有这种情况,我想将实体映射到viewmodel并返回.我必须使用ForMember()显式指定映射,因为它们的属性不共享完全相同的名称.这是我的类看起来如何的简短示例:

public class PartTwo {
    public int Integer { get; set; }
}

public class PartTwoViewModel {
    public int PartInteger { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想用这种方式使用它们:

Mapper.CreateMap<PartTwo, PartTwoViewModel>()
    .ForMember(dst => dst.PartInteger, opt => opt.MapFrom(src => src.Integer))
    .ReverseMap();

var partTwoViewModel = new PartTwoViewModel() { PartInteger = 42 };
var partTwo = Mapper.Map<PartTwoViewModel, PartTwo>(partTwoViewModel);
Assert.AreEqual(partTwoViewModel.PartInteger, partTwo.Integer);
Run Code Online (Sandbox Code Playgroud)

但它与PartInteger属性不匹配.(整数为0.)

有没有办法让这项工作?(当两个类的属性具有相同的名称时.)我是否必须在方法ForMember()中设置某种选项?

.net bidirectional automapper

58
推荐指数
2
解决办法
4万
查看次数