需要一些帮助。 我有几个类,我试图使用Automapper映射。我正在使用EF核心。 基本域是这样的:
Public class A
{
public string Id {get; set;}
public string Name {get; set;}
public virtual Icollection<AB> AB {get; set;}
}
Public class B
{
public string Id {get; set;}
public string Name {get; set;}
public virtual ICollection<AB> AB {get; set;}
}
Public class AB
{
public string A_Id {get; set;}
public string B_Id {get; set;}
public virtual A A {get; set;}
}
我的DTO是这样的:
Public class A_DTO
{
public string Id {get; set;}
public string Name {get; set;}
public ICollection<B> Bs {get; set;}
}
Public class B_DTO
{
public string Id {get; set;}
public string Name {get; set;}
public ICollection<A> As {get; set;}
}
现在我遇到的问题是:
谢谢!
答案 0 :(得分:1)
我知道这是一个古老的问题,但希望这有助于某人。
你可以这样调用Automapper的 ResolveUsing 方法:
ExtendWith
在RemoveInclusions方法中,您可以手动将A&#39的导航设置为null,如:
cfg.CreateMap<A, A_DTO>()
.ForMember(x => x.Bs,
opt => opt.ResolveUsing(src => RemoveInclusions(src)));
答案 1 :(得分:0)
部分答案在这里。我正在研究并偶然发现https://www.exceptionnotfound.net/entity-framework-and-wcf-loading-related-entities-with-automapper-and-reflection/
所以当DTO不是主体时删除导航属性我改变了我的DTO。
CreateMap<A, A_DTO>();
CreateMap<A, A_Nav_DTO>()
.ForMember(dto => dto.B, map =>
map.MapFrom(model =>
model.AB.Select(ab => ab.B).ToList()));
在我的映射中我做了
$(document).ready( function() {
$('#example').dataTable( {
"oSearch": {"sSearch": "Initial search"}
} );
} )
现在这可行,但显然现在我必须映射三个类而不是两个。有关如何改进此解决方案的任何建议吗?