다음은 클래스에 대한 매핑 및 매핑 오버라이드입니다. Member에서 IsActive 메소드를 호출하면 어떤 이유로 nhibernate가 데이터베이스에서 MemberExtraFields를 가져옵니다. 이것은 목록에서 메소드를 호출 할 때 n + 1 문제를 일으키고 있습니다. Fluent Nhibernate 메소드를 호출 할 때 일대일 게으른 로딩
내가이 문제를 해결하는 수 있나요, 내가 (거짓 NOPROXY, 프록시,) 모든 게으름public class Member
{
public virtual Guid Id { get; set; }
public virtual MemberExtraFields MemberExtraFields { get; set; }
public virtual bool Enabled { get; set; }
public virtual bool IsActive()
{
return Enabled;
}
}
public class MemberExtraFields
{
public virtual Guid Id { get; set; }
public virtual bool ExcludeFromCompetitions { get; set; }
public virtual Member Member { get; protected set; }
}
public class MemberMap : IAutoMappingOverride<Member>
{
public void Override(AutoMapping<Member> mapping)
{
mapping.Id(x => x.Id).GeneratedBy.GuidComb();
mapping.HasOne(x => x.MemberExtraFields)
.Cascade.All().LazyLoad(Laziness.NoProxy);
}
}
public class MemberExtraFieldsMap : IAutoMappingOverride<MemberExtraFields>
{
public void Override(AutoMapping<MemberExtraFields> mapping)
{
mapping.Id(x => x.Id).GeneratedBy.Foreign("Member");
mapping.HasOne(x => x.Member).Constrained().ForeignKey();
}
}
'.HasOne()'대신'References()'를 시도 했습니까? 내가 기억한다면'.HasOne()'참조는 항상로드됩니다. – Rabban
@Rabban을 참조로 변경했습니다. –