gpt4 book ai didi

nhibernate - 在 NHibernate 中使用 IList、IEnumerable、ISet 或 ICollection 有什么区别?

转载 作者:行者123 更新时间:2023-12-03 23:47:38 25 4
gpt4 key购买 nike

使用 IList 有什么区别? , IEnumerable , ISetICollection用于 NHibernate 实体类中的子对象集合? IE:

public class Parent
{
public virtual int IdParent { set; get; }

public virtual IList<Child> Children { set; get; }
// Or
public virtual ISet<Child> Children { set; get; }
// Or so on...
}

最佳答案

列表

  • 双向关系:不支持 . (因为引入了一个额外的索引列来维护子元素的顺序,子元素无法感知)
  • 已订购:是的
  • 类型: IList
  • 重复:允许
  • 添加元素时:将加载整个集合以获取索引列值。如果 child 的名单很大,请避免。


  • 双向关系:支持
  • 已订购:否
  • 类型: IList
  • 重复:允许
  • 在添加元素时:仅对数据库进行一次点击。没有性能问题。

  • 我设置
  • 双向关系:支持
  • 已订购:否
  • 类型:ISet(直到 NHibernate 3.0 支持 Iesi.Collections 的接口(interface))
  • 重复:不允许
  • 添加元素时:将加载整个集合以检查重复项。如果 child 的名单很大,请避免。

  • ICollection 可以用作子集合的类型,可以被三个 NHibernate 映射中的任何一个映射

    Nhibernate Cookbook 3.0 对使用每个集合都有很好的解释,以防万一你碰巧遇到它。

    关于nhibernate - 在 NHibernate 中使用 IList、IEnumerable、ISet 或 ICollection 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17558752/

    25 4 0