在我的数据库中,我对一个实体有一个复合的唯一键约束(CustomerId,Name)。在向数据库提交更改之前,我想测试是否支持唯一约束。用户可以在实体上自定义Name属性,因此我想创建一个自定义验证器来验证name属性,但在执行此操作时,我还需要访问CustomerId属性。我该怎么做?
我正在使用WCSF,这意味着我被困在Entlib3.1和包含的VAB中,但我猜有可能在不破坏WCSF的情况下切换到Entlib 4.1的VAB。
问候你,埃吉尔。
发布于 2010-02-19 21:41:56
诀窍是为实体创建验证器,而不是为该实体的属性之一创建验证器。您可以在您的实体上编写一个自我验证,如下所示:
[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));
}
}
}我必须说我不熟悉VAB3.1的特性集,所以我不能百分之百地确定这在3.1上是有效的。不过,它可以在4.1上运行。如果您不喜欢自我验证,您也可以编写一个自定义验证器并在配置文件中将其挂接起来。有关如何做到这一点的更多信息,请查看this stackoverflow answer。
https://stackoverflow.com/questions/346391
复制相似问题