如何在 VAB 中创建同时测试两个属性的自定义验证器?

发布于 2024-07-10 10:55:00 字数 270 浏览 9 评论 0原文

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

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

问候,埃吉尔。

In my database, I have a composite unique key constraint (CustomerId, Name) on a entity. I want to test if the unique constraint is upheld before submitting changes to the database. The user can customize the Name attribute on the entity, so I would like to make a custom validator that validates the name property, but while doing it, I need access to the CustomerId property as well. How do I do that?

I an using WCSF, which means I am stuck in Entlib 3.1 and the included VAB, but I guess it is possible to switch to EntLib 4.1's VAB without breaking WCSF.

Regards, Egil.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浮云落日 2024-07-17 10:55:00

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

[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答案 了解有关如何执行此操作的更多信息。

The trick is to create a validator for your entity, not for one of the properties of that entity. You can write a self validation on your entity as follows:

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

I must say I'm not familiar with the feature set of VAB 3.1, so I'm not 100% sure this works on 3.1. It works on 4.1 though. If you don't like self validation, you can also write a custom validator and hook it up in the configuration file. Look at this stackoverflow answer for more info on how to do this.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文