1

一致するタイプのすべてのプロパティで実装IUserTypeConventionを使用するための規則を作成しました。ICompositeUserType

public abstract class CompositeUserTypeConvention<TUserType> 
    : IUserTypeConvention
    where TUserType : ICompositeUserType, new()
{
    public virtual void Accept(IAcceptanceCriteria<IPropertyInspector> criteria)
    {
        var userType = new TUserType();

        criteria.Expect(x => x.Type == userType.ReturnedClass);
    }

    public virtual void Apply(IPropertyInstance instance)
    {
        instance.CustomType<TUserType>();
    }
}

これを適用すると、FluentNHibernateは、の規則を使用して複合型の各プロパティの列名を生成します{memberpropertyname}_{compositepropertyname}

MoneyプロパティAmountとのような複合型の場合Currency、エンティティPriceにタイプと呼ばれるプロパティがある場合Money、期待される列はとと呼ばれPrice_CurrencyますPrice_Amount

この規則を変更してアンダースコアを削除したいのですが、これが可能かどうかはわかりません。

4

1 に答える 1

1

メソッドには、引数としてCustomType<T>()受け入れるオーバーロードがあります。columnPrefixデフォルトの動作では、プロパティ名 + "_" をこの値として渡します。値を明示的に指定すると、望ましい結果が得られました。

public virtual void Apply(IPropertyInstance instance)
{
    instance.CustomType<TUserType>(instance.Name);
}
于 2012-09-29T13:34:01.000 に答える