0

在我的数据库中,我有一个实体上的复合唯一键约束 (CustomerId, Name)。我想在向数据库提交更改之前测试是否支持唯一约束。用户可以自定义实体上的 Name 属性,因此我想制作一个自定义验证器来验证 name 属性,但是在执行此操作时,我还需要访问 CustomerId 属性。我怎么做?

我正在使用 WCSF,这意味着我被困在 Entlib 3.1 和包含的 VAB 中,但我想可以在不破坏 WCSF 的情况下切换到 EntLib 4.1 的 VAB。

问候,埃吉尔。

4

1 回答 1

0

诀窍是为您的实体创建验证器,而不是为该实体的属性之一。您可以在您的实体上编写自我验证,如下所示:

[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 的功能集,所以我不能 100% 确定这适用于 3.1。但它适用于 4.1。如果您不喜欢自我验证,您也可以编写自定义验证器并将其连接到配置文件中。查看此 stackoverflow 答案以获取有关如何执行此操作的更多信息。

于 2010-02-19T13:41:56.133 回答