我需要将DTOs对象映射到我的实体对象中。将DTO对象映射到具有一对多关系的Entity对象中它不起作用。但是当将单个DTO对象映射到单个Entity对象时,它的工作正常。
实体 -
public class EntityClass
{
[Key]
public int Id { get; set; }
public decimal MonthlyPricing { get; set; }
public virtual IEnumerable<DynamicField> DynamicFields { get; set; }
}
public class DynamicField
{
public int Id { get; set; }
[ForeignKey("Service")]
public int ServiceId { get; set; }
public virtual Service Service { get; set; }
}
我的DTO在下面,
public class DTO_Object
{
public int Id { get; set; }
[Required]
public decimal MonthlyPricing { get; set; }
public IEnumerable<DynamicFieldForm> DynamicFields { get; set; }
}
public class DynamicFieldForm
{
public int Id { get; set; }
public int ServiceId { get; set; }
}
我的地图位于下方,
var config = new MapperConfiguration(cfg => cfg.CreateMap<DTO_Object,
EntityClass>().ForMember(s => s.DynamicFields,o => o.MapFrom(s =>
s.DynamicFields.Select(m => m.Id))));
IMapper imapper = config.CreateMapper();
var service = imapper.Map<DTO_Object, EntityClass>(sourse);
答案 0 :(得分:0)
Auto Mapper不是个好习惯!最好是手动构建DBContext以链接模型的数据,这些数据被封装到类模型中。
再次手动构建您的实体上下文不要使用AutoMapper它是一个非常好的 坏习惯你可以在网络资源上查看这个为什么写得更好 您手动实体上下文。
如果您希望为您生成实体数据类,您可以从数据库中执行代码优先,当您创建模型时,还将创建实体DataContext并行并使用正确的映射进行校正(添加模型,删除某些内容,编辑)。
P.S。例如,当我为企业应用程序(WebAPI或Web后端)构建一些东西时,我不使用自动映射。我自己编码。