【问题标题】:Will reference in NHibernate result in more memory consumption在 NHibernate 中引用会导致更多的内存消耗
【发布时间】:2012-09-10 11:05:06
【问题描述】:

我正在尝试通过在其网站上找到的教程学习 Fluent-NHibernate:https://github.com/jagregory/fluent-nhibernate/wiki/Getting-started

在这段代码中,您可以看到对 Store 对象的引用:

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 名员工(或更多),并且每个人都会引用存储实例。如果我们只有一个商店并且有很多引用它会发生什么。每个元素是否只存储引用存储对象的内存,还是全部存储单个对象导致占用大量内存?

【问题讨论】:

    标签: c# nhibernate memory relationship


    【解决方案1】:

    这取决于您如何使用 ISession。在单个 ISession 中,您只会获得一个 Store 实例。不同的 ISession 会有不同的 Store 实例。

    【讨论】:

    • 那么使用整个对象只使用一个 ISession,或者只是它的 id(integer) 在内存使用方面基本相同?
    • 使用一个 ISession,您将只有一个具有特定 ID 的 Store 对象。所以 10000 Employee 将在 ISession 中引用相同的 Store 对象。
    【解决方案2】:

    是的。每个 Employee 实例将只有一个实例引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多