NHibernate / FluentNHibernate复合id驼峰案例命名约定

时间:2013-12-25 12:46:38

标签: c# nhibernate fluent-nhibernate nhibernate-mapping fluent-nhibernate-mapping

有人可以指导我如何在NHibernate中为CompositeId()定义命名约定吗?

我尝试实施ICompositeIdentityConvention(不工作):

public void Apply(ICompositeIdentityInstance instance)
{
    instance.Access.CamelCaseField(CamelCasePrefix.Underscore);
}

其他接口(IPropertyInstanceIVersionInstanceIIdentityInstance)具有instance.Column("Column name here");方法,但我在该接口上找不到任何接口。

我试图遍历instance.KeyProperties而没有结果。

感谢。

1 个答案:

答案 0 :(得分:1)

也许这个例子可以帮助您达到目标:

class CompositeKeyConvention : ICompositeIdentityConvention
{
    public void Apply(ICompositeIdentityInstance instance)
    {
        var columninspector = instance.KeyManyToOnes.First(k => k.Name == "Key").Columns.First();

        var columnmapping = (ColumnMapping)columninspector.GetType().GetField("mapping", BindingFlags.GetField | BindingFlags.Instance | BindingFlags.NonPublic).GetValue(columninspector);

        columnmapping.Name = "IdColName";
    }
}