Fluent-NHibernate - Convention忽略的Component属性属性

时间:2010-03-31 10:49:13

标签: fluent-nhibernate components attributes convention

我有一个包含许多属性的组件,这些属性具有各种属性

通常,当这些属性添加到普通的旧域对象时,它们会被我的自定义AttributeConventions选中。

对于Component属性,它们不是。这些需要额外的布线吗?

e.g。

public class Component
{
    [Length(Max=50)]
    public virtual string Name {get; set;}
}

public class MyClass
{
    public virtual Component Component {get; set;}

    [Length(Max=50)]
    public virtual string Color {get; set;}
}

我得到了一张带有Color&列的MyClass表。组件名

Color是nvarchar(50),而ComponentName是nvarchar(255)(默认值)

1 个答案:

答案 0 :(得分:2)

好的,所以依靠内置的魔法将NHibernate.Validators LengthAttribute与表格列的长度联系起来似乎不是一个好主意。神奇的是,对于沼泽标准课程,Fluent会自然而然地选择它。为了强制它,我创建了自己的约定来处理它:

public class LengthConvention : AttributePropertyConvention<LengthAttribute>
    {
        protected override void Apply(LengthAttribute attribute, IPropertyInstance instance)
        {
            // override the default column length
            if (attribute.Max != default(int)) instance.Length(attribute.Max);
        }
    }