C# AutoMapper从ICollection中删除所有元素<;T>;EF核心代理实体的属性

C# AutoMapper从ICollection中删除所有元素<;T>;EF核心代理实体的属性,c#,entity-framework-core,automapper,C#,Entity Framework Core,Automapper,AutoMapper从EF core代理实体的ICollection属性中删除所有元素 要复制的代码: private static void Main(字符串[]args) { //初始化数据库 var dbContext=newdatabasecontext(); dbContext.clearlall(); //初始化映射器 var mapper=新的MapperConfiguration(cfg=> { cfg.CreateMap().formMember(b=>b.Posts,opt=

AutoMapper从EF core代理实体的ICollection属性中删除所有元素

要复制的代码:

private static void Main(字符串[]args)
{
//初始化数据库
var dbContext=newdatabasecontext();
dbContext.clearlall();
//初始化映射器
var mapper=新的MapperConfiguration(cfg=>
{
cfg.CreateMap().formMember(b=>b.Posts,opt=>opt.Condition((bDto,b)=>bDto.Posts!=null));
CreateMap();
}).CreateMapper();
//初始化种子数据
var blog=新博客
{
Description=“Blog Description”,
职位=新[]
{
新职位
{
Text=“测试文本1”,
},
新职位
{
Text=“测试文本2”,
},
},
};
//添加博客
blog=dbContext.Add(blog.Entity);
dbContext.SaveChanges();
//分离并再次查找以获取博客的代理
dbContext.Entry(blog.State=EntityState.Distached;
blog=dbContext.Find(blog.Id);
//更新
var blogDtoForUpdate=新的BlogDto
{
Description=“更新的博客描述”,
Posts=null,
};
//在这一行之后,博客将有空帖子(非空)。
Map(blogDtoForUpdate,blog);
}
预期成果: 使用新值更新blog.Description,blog.Posts与映射之前相同

实际结果: blog.Description已正确更新,但blog.Posts是空的帖子列表

注:

  • 如果映射程序忽略该条件,blog.Posts将为null,但为空
  • 当我将断点设置为opt.Condition并检查参数“b”(博客)时,帖子已经是空的

  • 有人知道为什么或如何达到预期的结果吗?

    检查AutoMapper.Collection。遗憾的是,这并不能解决映射程序清除集合的问题。实际上,这就是该软件包的全部目的。你只需要做更多的研究。有许多类似的问题。