EF Automapper Parents child 为空
EF Automapper Parents child is null
我正在尝试使用 entity framework 从我们的数据库中读取数据,并且由于该项目已经使用 Automapper 将实体转换为 Dtos,因此使用 Automappers 可查询扩展可以使生活更轻松。我正在使用 Microsoft.EntityFrameworkCore 版本 3.1.9.0
问题是 BundleMetaDataDt.child 的返回数组始终为空。
下面的查询 returns 大量数据,但每个 BundleMetaDataDtos child 值为空。
我试过:
- .Include(b => b.ChildBundle) 在 Where 语句
之前
- .ForMember(dest => dest.ChildBundle, opt => opt.MapFrom(src => src.ChildBundleId))
- .最大深度(2)
类:(字段比下图多)
public partial class Bundle
{
public Guid? ChildBundleId { get; set; }
public Bundle ChildBundle { get; set; }
}
public class BundleMetaDataDto
{
[DataMember(IsRequired = true, Order = 15)]
public BundleMetaDataDto ChildBundle { get; set; }
}
地图:
cfg.CreateMap<Bundle, BundleMetaDataDto>()
.ForMember(dest => dest.ChildBundle, opt => opt.MapFrom(src => src.ChildBundle))
查询:
var bundles = context.Bundles
.Where(bundle => bundle.ChildBundle != null)
.ProjectTo<BundleMetaDataDto>(EntityConverter.MapperConfiguration)
.ToArray();
多亏了@LucianBargaoanu,我通过添加使其工作:
cfg.Advanced.RecursiveQueriesMaxDepth = 1;
我正在尝试使用 entity framework 从我们的数据库中读取数据,并且由于该项目已经使用 Automapper 将实体转换为 Dtos,因此使用 Automappers 可查询扩展可以使生活更轻松。我正在使用 Microsoft.EntityFrameworkCore 版本 3.1.9.0
问题是 BundleMetaDataDt.child 的返回数组始终为空。 下面的查询 returns 大量数据,但每个 BundleMetaDataDtos child 值为空。
我试过:
- .Include(b => b.ChildBundle) 在 Where 语句 之前
- .ForMember(dest => dest.ChildBundle, opt => opt.MapFrom(src => src.ChildBundleId))
- .最大深度(2)
类:(字段比下图多)
public partial class Bundle
{
public Guid? ChildBundleId { get; set; }
public Bundle ChildBundle { get; set; }
}
public class BundleMetaDataDto
{
[DataMember(IsRequired = true, Order = 15)]
public BundleMetaDataDto ChildBundle { get; set; }
}
地图:
cfg.CreateMap<Bundle, BundleMetaDataDto>()
.ForMember(dest => dest.ChildBundle, opt => opt.MapFrom(src => src.ChildBundle))
查询:
var bundles = context.Bundles
.Where(bundle => bundle.ChildBundle != null)
.ProjectTo<BundleMetaDataDto>(EntityConverter.MapperConfiguration)
.ToArray();
多亏了@LucianBargaoanu,我通过添加使其工作:
cfg.Advanced.RecursiveQueriesMaxDepth = 1;