1

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

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

对于组件属性,它们不是。这些是否需要一些额外的接线?

例如

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 和 ComponentName 的表 MyClass

颜色是 nvarchar(50) 而 ComponentName 是 nvarchar(255)(默认值)

4

1 回答 1

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);
        }
    }
于 2010-03-31T13:56:00.053 回答