Быстрый NHibernate AutoMapping с различителем

Я никогда не использую маркировки в своем коде. Я предпочитаю создавать защиту и инициализировать ее к пустой указатель или другое необычное значение. Эта защита часто является объектом результата. Я не видел ни одного из своих коллег, использующих маркировки, ни нашел любого в нашем репозитории. Это действительно зависит от Вашего стиля кодирования. По-моему, использование маркировок уменьшило бы удобочитаемость, поскольку это не общая конструкция, и обычно это не используется в Java.

5
задан Marek Tihkan 10 November 2009 в 13:45
поделиться

1 ответ

Я обнаружил, что это работает:

    public class SubclassConvention : ISubclassConvention, ISubclassConventionAcceptance
{
    #region IConvention<ISubclassInspector,ISubclassInstance> Members

    public void Apply(ISubclassInstance instance)
    {
        if (instance.Name == typeof(SalesInvoice).AssemblyQualifiedName)
            instance.DiscriminatorValue("SAL");
    }

    #endregion

    #region IConventionAcceptance<ISubclassInspector> Members

    public void Accept(IAcceptanceCriteria<ISubclassInspector> criteria)
    {
        criteria.Expect(subclass => Type.GetType(subclass.Name).BaseType == typeof(Invoice));
    }

    #endregion
}

В этом сценарии у меня есть класс SalesInvoice, производный от класса Invoice. Критерии приемки для подкласса истинны, если текущий подкласс является производным от Invoice. Значение дискриминатора присваивается в зависимости от типа подкласса. Как видите, я сравниваю типы по именам. К сожалению, по какой-то причине свойство subclass.EntityType имеет значение null во время выполнения, поэтому я не могу напрямую сравнивать типы.

7
ответ дан 14 December 2019 в 08:53
поделиться
Другие вопросы по тегам:

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