[英]Saving AutoMapper mapped Collections of Entities using Entity Framework
[英]Find out mapped property using AutoMapper
我想在将DTO恢复到与导致错误的DTO属性相对应的viewmodel中的属性时发生'map'错误, PersonDto.PreferedName
导致DB错误,比如说Cannot be null
,并且此属性映射到viemodel PersonViewModel.Name
,我希望能够在视图的langiage中显示错误消息,例如“Name is required”。
有什么方法可以查询Mapper
或其他一些AutoMapper对象来查找哪个viewmodel属性PreferedName
映射到?
根据注释,您可以使用[Required]
( System.ComponentModel.DataAnnotations.RequiredAttribute )注释您的viewmodel,并检查控制器操作中的ModelState.IsValid
。
序列化ModelState.Values
的内容并返回到WPF前端将允许您以任何适合的方式显示任何验证错误。
看起来您正在从ModelState中获取错误,但要回答原始问题,您可以使用以下内容
using AutoMapper;
using System;
using System.Linq;
namespace ConsoleApplicationAutoMapper
{
class Program
{
static void Main(string[] args)
{
var config = new MapperConfiguration(cfg => cfg.CreateMap<Order, OrderDto>()
.ForMember(dest => dest.DtoMyProperty, x => x.MapFrom(y => y.MyProperty)
));
Order order = new Order() { MyProperty = 12 };
var typeMaps = config.CreateMapper()
.ConfigurationProvider
.GetAllTypeMaps()
.Where(t => t.SourceType == typeof(Order) && t.DestinationType == typeof(OrderDto))
.Single()
.GetPropertyMaps();
foreach (var map in typeMaps)
Console.WriteLine(map.SourceMember.Name + "->" + map.DestinationProperty.Name);
Console.ReadLine();
}
}
public class Order
{
public int MyProperty { get; set; }
}
public class OrderDto
{
public int DtoMyProperty { get; set; }
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.