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

C# 有没有办法使用NHibernate强制执行最小字符串长度?,c#,nhibernate,hibernate,validation,fluent-nhibernate,C#,Nhibernate,Hibernate,Validation,Fluent Nhibernate,我在一个实体上有一个字符串属性,我想按需要标记它。比如说, public class Product { public virtual string Name { get; set; } } 在我的映射中,我可以根据需要声明Name(使用Fluent NHibernate): 但是,这仅限制字符串为null。如果我将其分配给String.Empty,NHibernate会很高兴地将“的值存储到数据库中 我的问题是,有没有一种方法可以强制执行字符串的最小长度?例如,在本例中,产品名称应至

我在一个实体上有一个字符串属性,我想按需要标记它。比如说,

public class Product
{
    public virtual string Name { get; set; }
}
在我的映射中,我可以根据需要声明
Name
(使用Fluent NHibernate):

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


我的问题是,有没有一种方法可以强制执行字符串的最小长度?例如,在本例中,产品名称应至少包含3个字符。或者我的业务逻辑需要处理这个而不是NHibernate吗?

我相信您只能使用NHibernate强制执行最大长度和可空性(无论是否使用Fluent)


最小长度可以在您的模型上使用自定义数据注释强制执行(如果您使用MVC并且不想用属性扩展域模型,则可以使用ViewModel)

这不是(Fluent)NHibernate的责任,而是验证库的责任。例如,使用以下命令签出。


标记为
Oh noes的答案:)。
mapping.Map(x => x.Name).Required();
public class Product
{
    [Length(Min=3,Max=255,Message="Oh noes!")]
    public virtual string Name { get; set; }
}