2012-09-10 19 views
0

我努力學習流利,NHibernate的使用教程,我在它的網站上發現:https://github.com/jagregory/fluent-nhibernate/wiki/Getting-started將在NHibernate的結果引用更多的內存消耗

在這段代碼中,你可以看到參考存儲對象:

public class Employee 
{ 
    public virtual int Id { get; private set; } 
    public virtual string FirstName { get; set; } 
    public virtual string LastName { get; set; } 
    public virtual Store Store { get; set; }//<-- here 
} 

public class Store 
{ 
    public virtual int Id { get; private set; } 
    public virtual string Name { get; set; } 
    public virtual IList<Product> Products { get; set; } 
    public virtual IList<Employee> Staff { get; set; } 
} 

假設我將擁有10000個員工(或更多),每個員工都會參考商店實例。如果我們只有一家商店並提及很多參考資料,會發生什麼情況。每個元素是否只存儲對象的內存引用,還是將所有元素都存儲到單個對象中,導致大量內存被帶走?

回答

2

這取決於你如何使用ISession。在單個ISession中,您只會得到Store的一個實例。不同的事件會有不同的Store實例。

+0

因此,只使用一個ISession使用整個對象,或者只是它id(整數)在內存使用方面基本相同? – Gwynnbleid1

+0

有了一個ISession,你將只有一個具有特定ID的'Store'對象。所以10000'Employee'將在ISession中引用相同的'Store'對象。 – Alexander

0

是的。每個員工實例只有一個引用實例。