在SubmitChanges()之前validationLinq2Sql

任何人都可以告诉我调用SubmitChanges() 之前是否/如何在Linq2Sql中validation数据上下文中的更改。 我的情况是我创建一个上下文,执行多个操作并添加许多插入以及其他处理任务,然后如果提交失败则回滚。

我想做的是在完成某些任务后进行某种“Validate()”调用,这样我就可以在提交整个作业之前处理它。

要获取数据上下文中的所有更改,您可以调用

ChangeSet changes = dataContext.GetChangeSet(); // An IList changes.Deletes; changes.Inserts; changes.Updates; 

我所拥有的是每个值对象都有一个validation方法。 我使用attibutes来定义不同类型的validation。 我手动执行此操作的原因是因为我有一个数字可能是数据库中的int和代码,如果我保存年龄,则值1002可能无效。 所以我可以给出一系列的价值观等等。 。

如果每个值对象都从基础对象inheritance,则可以更轻松地迭代它们。 假设您的基类上有Validate方法。

我会指出这个工作,你将不得不编辑生成的代码,或滚动自己的值对象。 我通常会自己动手,因为我将它们用于validation。

您还可以将OnValidate()函数与LINQ-to-SQL Entity的分部类一起使用。 然后在SubmitChanges()期间但在将数据发送到数据库之前调用OnValidate()OnValidate()一个OnValidate()是你可以通过ChangeAction枚举来区分CRUD操作。

例如,

 public partial class YourEntity { partial void OnValidate(System.Data.Linq.ChangeAction action) { if(action == System.Data.Linq.ChangeAction.Insert) // Do insert ... etc. ... } }