2

我正在尝试使用NHibernate生成一个非常奇怪的数据库的模型。表格本身只有主键用于显示,所有实际关系都在唯一列上。例如,包含产品ID主键和唯一产品名称列的产品表。另一个表,需求,有一个产品名称列,并定义了关系。我知道这种情况并不理想,但它超出了我的控制范围。NHibernate(流利)懒加载不工作

无论如何,我能够使用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(); 
    } 
} 

有没有人有任何洞察到为什么懒加载不工作?我知道这不是因为我可以看到产品在SQL分析器中随需求一起被提取。

+0

所以,当您获取'时,它会加入到产品中?你可以显示SQL? – dotjoe

+1

退房这个环节,propertyref http://stackoverflow.com/questions/4888140/fluent-nhibernate-references-and-propertyref-doing-a-select-with-lazy-load – BlakeH

+0

dotjoe它实际上没有加盟,它做了一个完全独立的查询来获取产品,这实际上更糟糕。 – user653649

回答

1

我的想法(也许你可以尝试使用 “的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; 

二等

public class NewClass 
{ 
    public virtual Demand Product_id {get; set;} 
} 

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