Nhibernate - Отображение Списка не обновляет индексы Списка

Используйте таймеры высокого разрешения, доступные в winmm.lib. См. это для примера.

6
задан Thomas Lundström 24 August 2009 в 07:45
поделиться

1 ответ

Да, это из-за inverse = true, альтернативным решением было бы использовать набор или мешок вместо списка с order = "ListOrder", добавьте столбец ListOrder в качестве свойства в класс MyClass с пустым сеттером и получателем, который всегда возвращает его индекс из родительской дочерней коллекции. Нравится:

<class name="MyClass">
    <id name="Id">
        <generator class="native"/>
    </id>
    <bag name="Children" cascade="delete" inverse="true" order-by="ListOrder">
        <key column="ParentId"/>
        <one-to-many class="MyClass"/>
    </bag>
    <property name="ListOrder" column="ListOrder"/>
    <many-to-one name="Parent" class="MyClass" column="ParentId"/>
</class>

и класс

public class MyClass
{
    public virtual int ID { get; set; }
    public virtual IList<MyClass> Children { get; set; }
    public virtual MyClass Parent { get; set; }

    public virtual int ListOrder
    {
        get
        {
            if (Parent == null || !Parent.Children.Contains(this)) return -1;
            return Parent.Children.IndexOf(this);
        }
        set { }
    }
}
5
ответ дан 17 December 2019 в 04:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: