5

このような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;

A のインスタンスに対して Create のようなものを呼び出すと、コードは呼び出しますNHibernate.Validator.Engine.ValidatorEngine.Validate

ただし、 のメンバーのみを検証しA (Alpha)ます。オブジェクトを永続化しようとすると、データベースでnullNHibernateが許可されないため失敗します。Object

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

B毎回検証する行を繰り返さないようにするにはどうすればよいですか?

4

1 に答える 1

0

ドキュメントから、Valid 属性を使用して次のことができます。

関連付けられたオブジェクトに対して再帰的に検証を実行します。オブジェクトがコレクションまたは配列の場合、要素は再帰的に検証されます。オブジェクトがマップの場合、値要素は再帰的に検証されます。

もう試しましたか?

class A
{
    [NotNull]
    string Alpha;

    [Valid]
    B bObject;
}
于 2013-01-29T01:58:02.187 に答える