我在一个实体上有一个字符串属性,我想根据需要标记。例如,
public class Product
{
public virtual string Name { get; set; }
}
在我的映射中,我可以根据需要声明Name
(使用Fluent NHibernate):
mapping.Map(x => x.Name).Required();
但是,这仅限制字符串为null
。如果我将其分配给String.Empty
,NHibernate会很乐意将""
的值存储到数据库中。
我的问题是,有没有办法对字符串强制执行最小长度?例如,在这种情况下,产品名称应至少为3个字符。或者我的业务逻辑需要处理这个而不是NHibernate吗?
答案 0 :(得分:1)
我相信你只能使用NHibernate强制执行最大长度和可空性(使用或不使用Fluent)。
可以使用模型中的自定义DataAnnotation强制执行最小长度(如果使用MVC,则可以使用ViewModel,并且不希望使用属性使域模型膨胀)
答案 1 :(得分:1)
这不是(Fluent)NHibernate的责任,它是验证库的责任。例如,请查看NHibernate Validator。
答案 2 :(得分:1)
public class Product
{
[Length(Min=3,Max=255,Message="Oh noes!")]
public virtual string Name { get; set; }
}