Silverlight 域服务 - 删除验证

发布于 2024-11-17 06:47:58 字数 183 浏览 3 评论 0原文

如何使用Silverlight + Domain Service + EF执行约束验证

Table1是主表Table1

是Table2中的FK

我需要在删除Table1时验证Table2没有与Table1相关的记录。

我 Table2 有相关记录然后抛出异常。

是否可以?

How can I perform constraint validations with Silverlight + Domain Service + EF

Table1 is a primary table

Table1 is a FK in Table2

I need to validate when deleting Table1, that Table2 has no records related with Table1.

I Table2 has records related then throw an exception.

Is it possible?

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

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

发布评论

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

评论(1

风轻花落早 2024-11-24 06:47:58

在您的 DomainService 中,只需在删除方法上添加一个验证属性

[CustomValidation(typeof(MyCustomValidator), "CustomDeleteTable1Validation")]
public void DeleteTable1(Table1 table1)
{
    //normal behavior
    if ((table1.EntityState != EntityState.Detached))
    {
        this.ObjectContext.ObjectStateManager.ChangeObjectState(table1, EntityState.Deleted);
    }
    else
    {
        this.ObjectContext.Table1s.Attach(table1);
        this.ObjectContext.Table1s.DeleteObject(table1);
    }
}

然后在验证方法中做任何您想做的事情

public static class MyCustomValidator
    {
        public static ValidationResult CustomDeleteTable1Validation(Table1 table1, ValidationContext context)
        {
            // check your values ...
            var isOk=true;
            // and ...
            if(isOk)
                 return ValidationResult.Success;
            else
                 return new ValidationResult(validationContext.DisplayName + " error");
        }
    }

就可以了!

In your DomainService, just add a validation attribute on the delete method,

[CustomValidation(typeof(MyCustomValidator), "CustomDeleteTable1Validation")]
public void DeleteTable1(Table1 table1)
{
    //normal behavior
    if ((table1.EntityState != EntityState.Detached))
    {
        this.ObjectContext.ObjectStateManager.ChangeObjectState(table1, EntityState.Deleted);
    }
    else
    {
        this.ObjectContext.Table1s.Attach(table1);
        this.ObjectContext.Table1s.DeleteObject(table1);
    }
}

and then do whatever you want in the validation method

public static class MyCustomValidator
    {
        public static ValidationResult CustomDeleteTable1Validation(Table1 table1, ValidationContext context)
        {
            // check your values ...
            var isOk=true;
            // and ...
            if(isOk)
                 return ValidationResult.Success;
            else
                 return new ValidationResult(validationContext.DisplayName + " error");
        }
    }

enjoy !

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