Fluent NHibernate:如何使用约定为组件中的引用指定列名?

时间:2011-04-04 18:41:42

标签: .net nhibernate orm fluent-nhibernate

可以创建ComponentConvention,但此代码不起作用,因为References集合是IManyToOneInspector而不是IManyToOneInstace的集合。 有没有其他方法来指定列?

public class ComponentConvention : IComponentConvention
{
    public void Apply(IComponentInstance instance)
    {
        foreach (var inspector in instance.References)
        {
            inspector.Column("some_name");
        }
    }
}

1 个答案:

答案 0 :(得分:1)

遗憾的是,引用不会以与Properties和OneToOnes相同的方式公开。 您可以使用反射访问底层的ComponentMapping,然后使用

创建自己的ManyToOneInstances
var mapping = (ComponentMapping) typeof (ComponentInstance).GetField("mapping", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(instance);
foreach (var r in mapping.References)
{
    var ri = new ManyToOneInstance(r);
    ri.Column("some_name");
}