c# - NHibernate ISet 与 IList

标签 c# nhibernate

在大多数 NHiberate 示例中,他们使用 ISET 而不是 IList。我知道两者之间的基本区别 一个集合是唯一的。但是,我不确定为什么他们在延迟加载时使用 ISet 而不是 IList。

(Iesi.Collections.Generic)ISet 相对于 IList 有什么优势?延迟加载时的特殊性。

最佳答案

我相信这主要是由于 NHibernate 的 java 继承。

参见 the FAQ entry on persistent collections .特别提到 Java 默认情况下如何包含比 C# 更多的集合,并且它们特别映射到 ISet。

我相信大多数示例使用它的原因主要是因为这在 Java 中更常见,并且示例是从 Java 移植的。 (一些示例使用 set 而不是真正需要它是一个集合......)

话虽如此,集合与列表之间存在明显差异。行为不同,因此在某些用例中集合的行为更合适。对于延迟加载,这允许您减少对加载顺序的限制,因此您可以潜在地加载更少的信息并保持接口(interface)契约就位。

关于c# - NHibernate ISet 与 IList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/671575/

相关文章:

nhibernate - Unity3D + NHibernate,崩溃加载 "Unity 3.5 .net full Base Class Libraries"

c# - 从类生成 XML

c# - 动画按钮从一点到另一点

c# - 可以使用 Visual Studio 和 Xamarin Studio 构建 Xamarin 项目吗?

c# - 有没有办法指定 where T :new() restriction but with internal constructor?

c# - NHibernate 和 SQL Server 2012 序列

nhibernate - Nhibernate 映射文件中的硬编码值

c# - LINQ to Nhibernate 用户在 where 子句中定义的函数

nhibernate - 没有事务就不能更新对象

c# - 当异步开启时,nlog 中的时间戳有何含义?