我有一个包含许多属性的组件,这些属性具有各种属性
通常,当这些属性添加到普通的旧域对象时,它们会被我的自定义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)(默认值)
答案 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);
}
}