10
A
回答
13
是的,它可以完成,但您必须在映射配置中指定何时使用Condition()
跳过目标属性。
下面是一个例子。考虑下面的类:
public class Source
{
public string Text { get; set; }
public bool Map { get; set; }
}
public class Destination
{
public string Text { get; set; }
}
的第一张地图将不会覆盖destination.Text
,但第二意愿。
Mapper.CreateMap<Source, Destination>()
.ForMember(dest => dest.Text, opt => opt.Condition(src => src.Map));
var source = new Source { Text = "Do not map", Map = false };
var destination = new Destination { Text = "Leave me alone" };
Mapper.Map(source, destination);
source.Map = true;
var destination2 = new Destination { Text = "I'll be overwritten" };
Mapper.Map(source, destination2);
0
编号
这正是您从未将视图模型映射到域模型的原因之一。域/业务模型的变化对于工具来说太重要了。
手动:
customer.LastName = viewModel.LastName
不断变化的业务状态是不这样做太重要了。
3
是;我编写了这个扩展方法来将脏模型中的脏值映射到实体框架。
public static IMappingExpression<TSource, TDestination> MapOnlyIfDirty<TSource, TDestination>(
this IMappingExpression<TSource, TDestination> map)
{
map.ForAllMembers(source =>
{
source.Condition(resolutionContext =>
{
if (resolutionContext.SourceValue == null)
return !(resolutionContext.DestinationValue == null);
return !resolutionContext.SourceValue.Equals(resolutionContext.DestinationValue);
});
});
return map;
}
例子:
Mapper.CreateMap<Model, Domain>().MapOnlyIfDirty();
+1
SourceValue不是resolutioncontext的可用成员。我错过了什么? – CrusherJoe 2016-09-07 06:24:08
+0
是的,这些成员“SourceValue”和“DestinationValue”也不适用于我。 – JARRRRG 2017-03-24 09:15:12
相关问题
- 1. Typescript改变了属性类型?
- 2. 改变.innerHtml属性
- 3. 改变属性值
- 4. 改变属性.Current
- 5. TypeScript地图功能改变属性类型
- 6. 试图改变IQueryable集合的属性
- 7. 试图改变 '的margin-top' 属性
- 8. SQL JOIN为了极大地改变了性能
- 9. 属性选择器不改变属性
- 10. JavaScript改变属性下的属性
- 11. 当一个属性的属性改变
- 12. 在EF 4.2代码获得改变的属性列表仅
- 13. glDrawArrays修改属性地址
- 14. 仅当值更改时验证属性?
- 15. 制作AddOrUpdate仅更改一些属性
- 16. 更改图片属性VS Alpha属性
- 17. javascript不改变html属性
- 18. AngularJS改变属性值
- 19. Ember.js:当属性改变
- 20. jQuery属性不会改变
- 21. 改变组件属性[VB.NET]
- 22. 不可改变的属性
- 23. 更改列表视图sort XAML中的属性/方向仅限
- 24. 复制一个属性到一个变量,属性被改变
- 25. 如何发现在viewmodel中改变了引用类型属性?
- 26. 改变属性内容仅在变换层中的重力,将不起作用
- 27. 地图属性对象
- 28. Automapper - 地图嵌套属性
- 29. .NET属性更改了灵敏度
- 30. JDialog属性更改了行为
什么?我认为这正是这是什么?请详细说明如何将您的域对象转换为您的视图模型。 – Sam 2011-04-25 18:43:15
我在上面的意思是如何让你的编辑/视图模型回到你的域对象? – Sam 2011-04-25 18:52:10
你是否在你的控制器中执行此操作? – Sam 2011-04-25 23:40:31