」爲fully_qualified_type_name提取禁用懶惰特性,因爲它不支持實體級別的懶惰「。有誰知道爲什麼我從NHibernate/NH Profiler中獲得這個警告? 「
NH Profiler報告了此警告,因此我遇到了可怕的SELECT N + 1副作用。因此,如果返回2200個子組實體,則會執行額外的查詢來檢索每個InvoicePreference
實體(總計2201個查詢)。有關這種關係的事情似乎是造成這個問題的原因。
以下是有問題的實體及其各自的映射。
實體1
public class Subgroup : Entity
{
public virtual string GroupNumber { get; set; }
public virtual string RUSNumber { get; set; }
public virtual string REANumber { get; set; }
public virtual string CustomerType { get; set; }
public virtual string Name { get; set; }
public virtual IList<IndividualEmployment> Employees { get; set; }
public virtual IList<BenefitsAdministrator> Administrators { get; set; }
public virtual InvoicePreference InvoicePreference { get; set; }
}
實體2
public class InvoicePreference : IEntity
{
public virtual Guid Id { get; set; }
public virtual Guid SubgroupId { get; set; }
public virtual bool PaperlessNotifications { get; set; }
}
映射1
public static AutoPersistenceModel ConfigureSubGroup(this AutoPersistenceModel
autoPersistenceModel)
{
return autoPersistenceModel.Override<Subgroup>(map =>
{
map.Table("SubgroupV");
map.Id(s => s.Id).Column(SubGroupPrimaryKeyColumn);
map.Map(s => s.CustomerType, "BAS_Customer_Type");
map.Map(s => s.RUSNumber, "BAS_RUS_Number");
map.Map(s => s.GroupNumber, "BAS_Group_Number");
map.Map(s => s.REANumber, "BAS_REA_Number");
map.HasMany(s => s.Administrators).KeyColumn(SubGroupPrimaryKeyColumn);
map.HasMany(s => s.Employees).KeyColumn(SubGroupPrimaryKeyColumn);
map.HasOne(s => s.InvoicePreference).PropertyRef(i => i.SubgroupId);
});
}
馬普ing 2
public static AutoPersistenceModel ConfigureInvoicePreference(this AutoPersistenceModel autoPersistenceModel)
{
return autoPersistenceModel.Override<InvoicePreference>(map =>
{
map.Table("SubgroupInvoicePreference");
map.Schema(RetirementStatementsSchemaName);
});
}
這是來自NH profiler的確切消息嗎? – 2012-07-13 06:41:15
這不是確切的消息。它具有該類型的實際名稱。 WARN: 爲Neb.RetirementStatements.Services.Domain.Subgroup提取禁用惰性屬性,因爲它不支持在實體級懶惰 – 2012-07-13 14:46:09
似乎與此問題有關。 http://stackoverflow.com/questions/4888140/fluent-nhibernate-references-and-propertyref-doing-a-select-with-lazy-load – 2012-07-13 15:03:37