有人可以指导我如何在NHibernate中为CompositeId()定义命名约定吗?
我尝试实施ICompositeIdentityConvention
(不工作):
public void Apply(ICompositeIdentityInstance instance)
{
instance.Access.CamelCaseField(CamelCasePrefix.Underscore);
}
其他接口(IPropertyInstance
,IVersionInstance
,IIdentityInstance
)具有instance.Column("Column name here");
方法,但我在该接口上找不到任何接口。
我试图遍历instance.KeyProperties而没有结果。
感谢。
答案 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";
}
}