我想创建我的数据库层,以便我可以将其交换出来并在将来使用说LINQ或其他任何内容。
在我的抽象类(或接口)中,我应该使用什么返回类型来返回列表/项集合的结果?
nHibernate会返回List吗?
答案 0 :(得分:2)
您应该使用IList<T>
。 NHibernate总是从它的集合中返回IList<T>
,文档说:
集合映射的名称 是一个显而易见的地方 Java和.NET之间存在差异 所示。 Java的集合库有 比以往更多的选择 System.Collection确实。
* The <list> maps directly to an IList. * The <map> maps directly to an IDictionary. * The <bag> maps to an IList. A <bag> does not completely comply with
IList接口,因为Add() 方法不保证返回 正确的指数。可以添加一个对象 到没有初始化的 IList的。一定要隐藏 来自API消费者的IList 或者做好记录。 *映射到Iesi.Collections.ISet。那个界面 是Iesi.Collections的一部分 与NHibernate一起发布的程序集。
不仅如此,对接口进行编码通常也是一种很好的做法,而不是抽象。