相关疑难解决方法(0)

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

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

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

c# automapper

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

找到了自动映射器未映射的成员

我们正在使用Automapper进行项目,并且似乎随机获得以下错误:

AutoMapper.AutoMapperConfigurationException:找到未映射的成员.查看下面的类型和成员.添加自定义映射表达式,忽略,添加自定义解析程序或修改源/目标类型

代码在几个月内没有改变.我收到错误,刷新,错误消失,页面工作正常.我正在使用

Mapper.AssertConfigurationIsValid();
Run Code Online (Sandbox Code Playgroud)

不知道为什么它抱怨映射不好然后刷新再次没问题,有没有人碰到这个?调试没有帮助,因为它是随机的,有时没有错误,然后其他日子它将在网站的某个地方弹出,回到它并且没关系.错误也出现在随机页面上,而不是相同的页面,而不是相同的映射.

c# asp.net automapper

53
推荐指数
2
解决办法
6万
查看次数

替换 Automapper 的 ForAllOtherMembers()

ForAllOtherMembers 扩展方法已从 Automapper 11 中删除,我使用它来忽略除前面提到的属性之外的属性的常规映射,如下所示

ForAllOtherMembers(opt=>opt.ignore())
Run Code Online (Sandbox Code Playgroud)

如何在 Automapper 11 中执行此操作?

c# automapper

42
推荐指数
3
解决办法
1万
查看次数

使用AutoMapper来展平嵌套对象的更好方法是什么?

我一直在将域对象展平为DTO,如下例所示:

public class Root
{
    public string AParentProperty { get; set; }
    public Nested TheNestedClass { get; set; }
}

public class Nested
{
    public string ANestedProperty { get; set; }
}

public class Flattened
{
    public string AParentProperty { get; set; }
    public string ANestedProperty { get; set; }
}

// I put the equivalent of the following in a profile, configured at application start
// as suggested by others:

Mapper.CreateMap<Root, Flattened>()
      .ForMember
       (
          dest => dest.ANestedProperty
          , opt …
Run Code Online (Sandbox Code Playgroud)

c# nested flatten automapper

23
推荐指数
3
解决办法
1万
查看次数

您能告诉AutoMapper在映射时全局忽略缺失的属性吗?

我有很多实体,到目前为止,我一直在做类似的事情

Mapper.CreateMap<Employee, EmployeeDetailsDTO>()
    .ForSourceMember(mem => mem.NewsPosts, opt => opt.Ignore());
Run Code Online (Sandbox Code Playgroud)

我想告诉AutoMapper简单地忽略目标对象中缺少的属性,而不必指定它们中的每一个.到目前为止,我还没有找到一种方法可以使用我的多个SO和Google搜索.有人有解决方案吗?我准备做某种循环或任何东西,只要它可以写一次,并且它将随着model/dto更改或添加的属性进行扩展.

c# automapper

14
推荐指数
2
解决办法
8382
查看次数

自动映射器“映射一些并忽略其余的”

我知道有很多关于此的问题(和答案),但是当使用 .net6 和 automapper 11.01.1 时,这些问题都不适合我。他们似​​乎已经删除了其中的许多IgnoreIgnoreAllUnmapped并且ForAllOtherMembers在最新的 automapper 中。如果我使用ignore with ForAllMembers(before或after ForMember),它将忽略所有字段,甚至是我用地图指定的字段。

问题:我有两个具有相同名称字段的类,但我只想映射一些并忽略其余的。(请不要说“为什么需要自动映射器”,这不是这里的问题)。

在这种情况下我需要使用自动映射器,但不确定他们是否不再支持这个?我可能错过了一个nuget吗?我只使用“AutoMapper 11.01.1”

public class User1
{
    public string Name { get; set; } = "Foo";
    public int Age { get; set; } = 7;
    public string Phone { get; set;} = "123456789";
}
public class User2
{ 
    public string FirstLastName { get; set; }
    public int Age { get; set; }
    public string Phone { get; set; } …
Run Code Online (Sandbox Code Playgroud)

c# mapping automapper

13
推荐指数
1
解决办法
5791
查看次数

如何在automapper中的列表中展平条件对象

我有一个Item包含使用AutoMapperProduct映射到各自ViewModel对象的列表.

在我的MVC项目中,我有一个Action方法,显示Item一个选中的Product.为此我有一个ViewModel被调用的ItemDetailsViewModel包含扁平Item对象,一个列表ProductViewModel和一个扁平选择Product.

我遇到的困难是最好的展示这个扁平的选择Product.

可以把它想象成eBay,你Item可以选择多种变化,例如颜色.对我来说,有多种变化Products.当用户选择Product我想要返回ItemDetailsie Item,列表Products和所选择的Product.

我想知道最好的方法吗?目前我的方法是将一个映射Item到一个ItemDetailsViewModel,选择所需的ProductViewModel,然后专门将ProductViewModel后面的每个属性映射到ItemDetailsViewModel.此外,由于ItemProduct具有相同命名属性,最后一行映射将产品带回覆盖Item的ID和密码.

有关如何最好地配置映射的任何建议?

我已经省略了我所拥有的映射,因为它主要是直接的一对一映射,除了将选定的映射映射ProductViewModelItemDetailsViewModel.

Mapper.CreateMap<Item, ItemViewModel>()
    .ReverseMap();

Mapper.CreateMap<ProductViewModel, ItemDetailsViewModel>()
    .ForMember(d => d.ProductId, o => o.MapFrom(s => s.Id))
    .ForMember(d => d.ProductCode, …
Run Code Online (Sandbox Code Playgroud)

c# automapper automapper-3

8
推荐指数
1
解决办法
386
查看次数

当您的视图模型没有与域模型一样多的字段时,如何忽略/保留MVC中的值?

我有一个网站,我使用fluentNhibernate和Asp.net MVC.我有一个编辑视图,允许用户编辑该记录(对象)的10个属性中的8个.当您提交表单并且模型绑定时,两个不可编辑的字段在视图模型中返回为空字符串或默认的DateTime值,具体取决于属性的类型.

因为我也使用AutoMapper将我的视图模型映射到我的域实体,所以我不能只从数据库加载我的对象的新副本并手动设置2个缺少的属性.什么是坚持那些我不想编辑的领域的最好方法?

一种方法是将值保存在View上的隐藏输入字段中.这有效但感觉很糟糕.我感谢任何建议.我的AutoMapper中有没有办法配置这个所需的功能?

更新: 好的,所以我想我不是要忽略这些字段,我正在努力确保我不会保持null或空字符串值.忽略AutoMapper中的字段就是这样,当我尝试在保存到我的存储库之前映射它们时,它们会被忽略并且为null.

asp.net-mvc mvvm fluent-nhibernate viewmodel automapper

6
推荐指数
1
解决办法
1951
查看次数

AutoMapper 中子对象中没有前缀名称的扁平化

将这些类视为源:

public class SourceParent
{
    public int X { get; set; }
    public SourceChild1 Child1 { get; set; }
    public SourceChild2 Child2 { get; set; }
}

public class SourceChild1
{
    public int A { get; set; }
    public int B { get; set; }
    public int C { get; set; }
    public int D { get; set; }
}

public class SourceChild2
{
    public int I { get; set; }
    public int J { get; set; }
    public int …
Run Code Online (Sandbox Code Playgroud)

c# automapper

5
推荐指数
1
解决办法
959
查看次数

AutoMapper:如何仅映射匹配的属性名称而忽略所有其他属性?

我是AutoMapper的新手,正在使用6.2.2版。我正在尝试将视图模型映射到实体(也使用Entity Framework)。我只想更新同时存在于视图模型和实体中的属性。该实体具有其他导航属性和相关对象,这些属性不属于源视图模型。我目前收到一个错误,提示我在目标实体上没有映射属性。我的视图模型和实体都具有40多个属性,因此我不想显式地将每个属性添加到地图。

这是我的代码:

地图:

public static void RegisterMaps()
{
    AutoMapper.Mapper.Initialize(config =>
    {
                    config.CreateMap<EditApplicationViewModel, Application>();

    });

}
Run Code Online (Sandbox Code Playgroud)

我也尝试了以下方法,但得到相同的错误:

config.CreateMap<EditApplicationViewModel, Application>(MemberList.source);
Run Code Online (Sandbox Code Playgroud)

控制器:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(EditApplicationViewModel viewModel)
{
    if (ModelState.IsValid)
    {
        Application application = _applicationService.GetById(viewModel.ApplicationId);

        application = Mapper.Map(viewModel, application);
    }
}
Run Code Online (Sandbox Code Playgroud)

错误信息:

InnerException:HResult = -2146233088消息=找到了未映射的成员。在下面查看类型和成员。添加自定义映射表达式,忽略,添加自定义解析器或修改源/目标类型对于没有匹配的构造函数,请添加no-arg ctor,添加可选参数或映射所有构造函数参数======= ================================================== =字符串->用户(目标成员列表)System.String-> 。***。entities.User(目标成员列表)

未映射的属性:已删除-目标上一长串相关对象和属性

   Source=AutoMapper
   StackTrace:
        at lambda_method(Closure , EditApplicationViewModel , Application , ResolutionContext )
Run Code Online (Sandbox Code Playgroud)

更新:

我还尝试了以下地图。我没有收到任何错误,但没有任何源属性在目标上更新。

config.CreateMap<EditApplicationViewModel, Application>().ForAllOtherMembers(opts=>opts.Ignore());
Run Code Online (Sandbox Code Playgroud)

c# automapper automapper-6

2
推荐指数
1
解决办法
5987
查看次数

AutoMapper和EF实体 - 忽略所有关系

我正在使用AutoMapper将DTO映射到实体.

在创建地图时,我总是忽略实体的关系,这通常会产生一个很长很长的列表.那是:

Mapper.CreateMap<CUSTOMER_DTO, CUSTOMER_ENTITY>()
.ForMember(m => m.ORDERS, o => o.Ignore())
.ForMember(m => m.PAYMENT_METHODS, o => o.Ignore());
// And on and on!
Run Code Online (Sandbox Code Playgroud)

有没有办法可以指示AutoMapper忽略我实体中的每个关系?非常感谢.

c# entity-framework automapper

1
推荐指数
1
解决办法
1429
查看次数