0

私のデータベースでは、エンティティに複合一意キー制約(CustomerId、Name)があります。データベースに変更を送信する前に、一意の制約が守られているかどうかをテストしたいと思います。ユーザーはエンティティのName属性をカスタマイズできるので、nameプロパティを検証するカスタムバリデーターを作成したいのですが、その間、CustomerIdプロパティにもアクセスする必要があります。それ、どうやったら出来るの?

私はWCSFを使用しています。つまり、Entlib 3.1と付属のVABでスタックしていますが、WCSFを壊さずにEntLib4.1のVABに切り替えることは可能だと思います。

よろしく、エギル。

4

1 に答える 1

0

秘訣は、エンティティのプロパティの 1 つではなく、エンティティのバリデータを作成することです。次のように、エンティティに自己検証を記述できます。

[HasSelfValidation]
public class MyEntity
{
    public int CustomerId { get; set; }
    public string Name { get; set; }

    [SelfValidation]
    public void ValidateRange(ValidationResults results)
    {
        bool isUnique = [query the database here]

        if (!isUnique)
        {
            results.AddResult(new ValidationResult(
                "CustomerId and Name are not unique", this, "", "", null));
        }
    }
}

私は VAB 3.1 の機能セットに詳しくないので、これが 3.1 で機能するかどうかは 100% 確信が持てません。ただし、4.1でも動作します。自己検証が気に入らない場合は、カスタム バリデータを作成して構成ファイルに接続することもできます。これを行う方法の詳細については、このスタックオーバーフローの回答をご覧ください。

于 2010-02-19T13:41:56.133 に答える