我试图让自动播放器为.NET核心工作,我似乎错过了一些重要的东西。
我的自动设置程序设置如下:
在我Startup.cs
方法的ConfigureServices
中,我有以下一行:
services.AddAutoMapper(typeof(Startup), typeof(ApplicationDbContext));
我还有一个名为MappingProfile
的类,类似于:
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap<CfGroup, GroupModel>()
.IgnoreAllUnmapped();
CreateMap<GroupModel, CfGroup>()
.IgnoreAllUnmapped();
...
}
}
另一个SO问题提出了IgnoreAllUnmapped
,它看起来像这样:
public static IMappingExpression<TSource, TDest> IgnoreAllUnmapped<TSource, TDest>(
this IMappingExpression<TSource, TDest> expression)
{
expression.ForAllMembers(opt => opt.Ignore());
return expression;
}
我的CfGroup看起来像这样:
[Table("Groups")]
public class CfGroup
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[StringLength(100)]
[Required]
public string Name { get; set; }
[DataType(DataType.ImageUrl)]
[StringLength(250)]
public string ImageUrl { get; set; }
[Required]
public int FounderId { get; set; }
[ForeignKey("FounderId")]
public virtual CfUser Founder { get; set; }
[Required]
public bool IsActive { get; set; }
[Required]
public DateTime CreatedTimestampUtc { get; set; }
[StringLength(3000)]
public string About { get; set; }
public virtual ISet<UserGroupMember> Members { get; set; }
public virtual ISet<UserGroupManager> Managers { get; set; }
}
...我的GroupModel看起来像这样:
public class GroupModel
{
public int Id { get; set; }
public string Name { get; set; }
public string ImageUrl { get; set; }
public string About { get; set; }
}
调用我的web api端点时,我从数据库中获得了CfGroup
个实体的集合。然后我运行一个这样的命令:
var dtos = entities.Select(_mapper.Map<GroupModel>);
...但我的dtos是&#34;空&#34; ... IOW,实例已创建,但Id
值设置为0,所有字符串值都设置为{{1 }}。这绝对不是null
变量中的内容。
我也尝试过如下显式转换它:
entities
并假设它是var dtos = entities.Select(x => _mapper.Map<GroupModel>(x));
问题,尝试用IEnumerable
做出来:
List
...但无论如何,DTO仍然会被实例化,但所有属性都设置为默认值。
我做错了什么?
答案 0 :(得分:1)
我怀疑这可能是因为你在你的linq表达式中进行映射。尝试这样的事情:
var dtos = _mapper.Map<IEnumerable<GroupModel>>(entities.ToList());
答案 1 :(得分:0)
事实证明IgnoreAllUnmapped
不是正确的方法;事实上,没有它,映射似乎工作正常。我拿出了额外的“异常处理”代码,它按照我的意愿工作。我在思考它。