'index'和'list-index'有什么区别?

时间:2011-04-01 16:08:14

标签: nhibernate

对于NHibernate中的集合映射以及列表等有序集合,必须映射索引列字段。我刚才注意到,从NHibernate 2.0开始,似乎还有一个“list-index”属性,我相信它可以用在索引位置。

除了能够使用“list-index”指定基本索引值之外,两者之间是否存在差异?使用一个VS另一个有什么好处?

2 个答案:

答案 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>