代码之家  ›  专栏  ›  技术社区  ›  jenson-button-event

fluent nhibernate-被约定忽略的组件属性

  •  1
  • jenson-button-event  · 技术社区  · 15 年前

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

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

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

    例如

    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;}
    }
    

    我得到一个带有列颜色和组件名称的表MyClass

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

    1 回复  |  直到 15 年前
        1
  •  2
  •   jenson-button-event    15 年前

    好吧,那么依赖于连接nhibernate的内置魔力。验证程序lengthattribute到表列的长度似乎不是一个好主意。神奇的是,对于BOG标准类来说,这是由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);
            }
        }