我正忙着为我的最新应用程序添加数据库(SQLite)支持。由于有些表有行引用其他表中的行,我认为开始使用外键约束可能是个好主意。稍后我进行了一些谷歌搜索,我可以将约束应用于一个表作为测试运行。
var c = workingDataSet.Tables["measurements"].Columns["reference_realestate"];
var p = workingDataSet.Tables["realestates"].Columns["id"];
ForeignKeyConstraint fkcon = new ForeignKeyConstraint(p, c);
fkcon.DeleteRule = Rule.None;
workingDataSet.Tables["measurements"].Constraints.Add(fkcon);
如果我尝试删除“测量”中引用的“realestates”记录,则会产生以下异常:
'System.Data.dll中发生了'System.Data.InvalidConstraintException'类型的未处理异常 附加信息:无法删除此行,因为约束是在关系Constraint1上强制实施的,删除此行将链接子行。'
我现在的问题是在哪里以及如何处理此异常?在阅读了一些其他帖子后,我发现this指出我在DataGrid控件中处理异常。我尝试过使用RowValidationRules但它似乎也没有用。
<DataGrid.RowValidationRules>
<local:RowValidation_Measurements ValidationStep="UpdatedValue"/>
</DataGrid.RowValidationRules>
我是如何实现这一目标的?哦,我必须提到我正在使用MVVM。