对于NHibernate中的集合映射以及列表等有序集合,必须映射索引列字段。我刚才注意到,从NHibernate 2.0开始,似乎还有一个“list-index”属性,我相信它可以用在索引位置。
除了能够使用“list-index”指定基本索引值之外,两者之间是否存在差异?使用一个VS另一个有什么好处?
答案 0 :(得分:3)
我有同样的问题并阅读了代码。我找到了以下内容:
(NH 3.0,Cfg \ Collection Binder.cs,#548)
private void BindCollectionIndex(/*...*/)
{
// ...
if (listMapping.ListIndex != null)
{
iv = new SimpleValue(model.CollectionTable);
new ValuePropertyBinder(iv, Mappings).BindSimpleValue(
listMapping.ListIndex,
IndexedCollection.DefaultIndexColumnName,
model.IsOneToMany);
}
else if (listMapping.Index != null)
{
iv = new SimpleValue(model.CollectionTable);
listMapping.Index.type = NHibernateUtil.Int32.Name;
new ValuePropertyBinder(iv, Mappings).BindSimpleValue(
listMapping.Index,
IndexedCollection.DefaultIndexColumnName,
model.IsOneToMany);
}
// ...
}
对我来说意味着什么:
list-index
会覆盖index
index
的类型设置为int
。因此,您必须检查在映射文件中使用其他类型时实际发生的情况。list-index
支持base
告诉它要启动哪个索引。 (这是在其他地方找到的)答案 1 :(得分:0)
通过查看XSD,我可以告诉index
支持指定type
和多个columns
,因此它可以与自定义类型一起使用(我还没试过)< / p>