有没有办法用NHibernate强制执行最小字符串长度?

时间:2010-10-26 19:37:14

标签: c# nhibernate hibernate validation fluent-nhibernate

我在一个实体上有一个字符串属性,我想根据需要标记。例如,

public class Product
{
    public virtual string Name { get; set; }
}

在我的映射中,我可以根据需要声明Name(使用Fluent NHibernate):

mapping.Map(x => x.Name).Required();

但是,这仅限制字符串为null。如果我将其分配给String.Empty,NHibernate会很乐意将""的值存储到数据库中。

我的问题是,有没有办法对字符串强制执行最小长度?例如,在这种情况下,产品名称应至少为3个字符。或者我的业务逻辑需要处理这个而不是NHibernate吗?

3 个答案:

答案 0 :(得分:1)

我相信你只能使用NHibernate强制执行最大长度和可空性(使用或不使用Fluent)。

可以使用模型中的自定义DataAnnotation强制执行最小长度(如果使用MVC,则可以使用ViewModel,并且不希望使用属性使域模型膨胀)

答案 1 :(得分:1)

这不是(Fluent)NHibernate的责任,它是验证库的责任。例如,请查看NHibernate Validator

答案 2 :(得分:1)

使用NHibernate validator

public class Product
{
    [Length(Min=3,Max=255,Message="Oh noes!")]
    public virtual string Name { get; set; }
}