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