2012-10-18 112 views
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