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