c# - 在 SubmitChanges() 之前验证 Linq2Sql

标签 c# .net linq linq-to-sql validation

谁能告诉我是否/如何在 Linq2Sql 调用 SubmitChanges() 之前验证数据上下文中的更改。我遇到的情况是,我创建了一个上下文,执行多个操作并在其他处理任务中添加了许多插入,然后在提交失败时回滚。

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

最佳答案

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

ChangeSet changes = dataContext.GetChangeSet();

// An IList<Object>
changes.Deletes;
changes.Inserts;
changes.Updates;

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

如果您的每个值对象都继承自一个基础对象,那么迭代它们会更容易。假设您的基类有一个 Validate 方法。

我要指出的是,要使它起作用,您将不得不编辑生成的代码,或者推出您自己的值对象。由于我使用它们进行验证的方式,我通常会自己推出。

关于c# - 在 SubmitChanges() 之前验证 Linq2Sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1212738/

相关文章:

c# - 错误 CS1002 : ; Expected -- I have a semicolon. :(

c# - XNA 二维碰撞检测

c# - 编写方法和单元测试

c# - C# 中的 JSON 字符串到 CSV 和 CSV 到 JSON 的转换

c# - 更聪明的where子句?

c# - 带空括号 () 的 Lambda 表达式

c# - 如何在新线程中运行一段简单的代码?

c# - C# 中的只读列表

c# - System.ServiceModel.QuotaExceededException异常

c# - 为什么我的 OrderBy 错误没有给出编译器警告?