NHibernate(流畅)延迟加载不工作

NHibernate(流畅)延迟加载不工作,nhibernate,fluent-nhibernate,fluent-nhibernate-mapping,Nhibernate,Fluent Nhibernate,Fluent Nhibernate Mapping,我试图使用NHibernate为一个非常奇怪的数据库生成一个模型。表本身的主键仅用于显示,所有实际关系都位于唯一列上。例如,具有产品id主键和唯一产品名称列的产品表。另一个表demand有一个product name列,用于定义关系。我知道这种情况并不理想,但我无法控制 无论如何,我能够使用Fluent-NHibrenate将产品映射到需求,但我似乎无法将实体加载到延迟加载 public class Demand { public virtual DemandId { get; set; }

我试图使用NHibernate为一个非常奇怪的数据库生成一个模型。表本身的主键仅用于显示,所有实际关系都位于唯一列上。例如,具有产品id主键和唯一产品名称列的产品表。另一个表demand有一个product name列,用于定义关系。我知道这种情况并不理想,但我无法控制

无论如何,我能够使用Fluent-NHibrenate将产品映射到需求,但我似乎无法将实体加载到延迟加载

public class Demand
{
  public virtual DemandId { get; set; }
  public virtual Product { get; set; }
}

public class DemandMap : ClassMap<Demand>
{
  public DemandMap()
  {
    this.Table("Demand");
    this.LazyLoad();
    this.Id(x => x.DemandId);
    this.References(x => x.Product).PropertyRef(x => x.ProductName).LazyLoad();
  }
}
公共类需求
{
公共虚拟机{get;set;}
公共虚拟产品{get;set;}
}
公共类DemandMap:ClassMap
{
公共需求地图()
{
本表(“需求”);
这个。LazyLoad();
this.Id(x=>x.DemandId);
this.References(x=>x.Product).PropertyRef(x=>x.ProductName).LazyLoad();
}
}
有人知道为什么惰性加载不起作用吗?我知道这并不是因为我可以在SQL profiler中看到产品与需求一起被提取。

我的想法(也许你可以尝试使用“HasMany”,这里有一个例子,但你可以阅读一些相关内容):

头等舱

public class Demand
{
  public virtual int DemandId { get; set; }
  public virtual int Product { get; set; }
  public virtual IEnumerable<NewClass> Name {get; set;} 
}

  this.HasMany(x=> x.Product).Column("Product_id").not.nullable;

那么,当你
得到
时,它就加入到产品中了?您可以显示sql吗?请查看此链接,propertyref dotjoe它实际上并没有加入,它正在执行一个完全独立的查询以获取产品,这实际上更糟。似乎产品映射的property ref不支持延迟加载,您可以尝试
Id(x=>x.ProductName)。GeneratedBy().Assigned()
…并让遗留数据库生成实际的主键。但是,这可能只适用于标识id。
public class NewClass
{
  public virtual Demand Product_id {get; set;}
}

this.References(x => x.Product).Column("product_id).not.nullable