get*_*tit 5 .net c# nhibernate
假设有一个像这样class A的引用class B
class A
{
[NotNull]
string Alpha;
B bObject;
}
class B
{
[NotNull]
string Beta;
}
A a = new A();
a.Alpha = "test"
a.bObject = new b();
a.bObject.Beta = null;
Run Code Online (Sandbox Code Playgroud)
现在,当为A的实例调用Create这样的东西时,代码会调用 NHibernate.Validator.Engine.ValidatorEngine.Validate
但是,它只验证了成员A (Alpha).当NHibernate尝试持久化对象时,它会失败,因为数据库不允许为nullObject.
是否可以对其进行配置,以便验证A还可以验证B?的属性?
*编辑:
我目前解决这个问题的方法是手动调用Validate(A.bObject)存储库需要创建/更新的任何地方A,例如:
在存储库中 A
public void Update(A entity)
{
//I want to avoid having to do this in every class repository that has a
//reference to B
var errorsList = valEngine.Validate(entity.bObject);
if (errorsList .Length == 0)
{
status = base.Create(entity);
//Simply calls the appropriate NH function to persist the object
}
}
Run Code Online (Sandbox Code Playgroud)
如何避免重复B每次验证的行?
从文档中,您可以使用 Valid 属性来:
对关联对象递归执行验证。如果对象是集合或数组,则将递归地验证元素。如果对象是 Map,则递归地验证值元素。
你试过了吗?
class A
{
[NotNull]
string Alpha;
[Valid]
B bObject;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
580 次 |
| 最近记录: |