在我的数据库中,我有一个实体上的复合唯一键约束 (CustomerId, Name)。我想在向数据库提交更改之前测试是否支持唯一约束。用户可以自定义实体上的 Name 属性,因此我想制作一个自定义验证器来验证 name 属性,但是在执行此操作时,我还需要访问 CustomerId 属性。我怎么做?
我正在使用 WCSF,这意味着我被困在 Entlib 3.1 和包含的 VAB 中,但我想可以在不破坏 WCSF 的情况下切换到 EntLib 4.1 的 VAB。
问候,埃吉尔。
在我的数据库中,我有一个实体上的复合唯一键约束 (CustomerId, Name)。我想在向数据库提交更改之前测试是否支持唯一约束。用户可以自定义实体上的 Name 属性,因此我想制作一个自定义验证器来验证 name 属性,但是在执行此操作时,我还需要访问 CustomerId 属性。我怎么做?
我正在使用 WCSF,这意味着我被困在 Entlib 3.1 和包含的 VAB 中,但我想可以在不破坏 WCSF 的情况下切换到 EntLib 4.1 的 VAB。
问候,埃吉尔。
诀窍是为您的实体创建验证器,而不是为该实体的属性之一。您可以在您的实体上编写自我验证,如下所示:
[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 答案以获取有关如何执行此操作的更多信息。