gpt4 book ai didi

c# - ForeignKeyConstraint.AcceptRejectRule 在 ADO.Net 中的用途?

转载 作者:太空宇宙 更新时间:2023-11-03 14:00:59 26 4
gpt4 key购买 nike

AcceptRejectRule的人生目标是什么? ADO.Net 中 ForeignKeyConstraint 类的属性?

MSDN 文档没有提供足够的解释(对我来说)来阐明其目的。阅读文档后,我认为将该属性设置为 None 将防止从父表到子表的任何更改级联。但是,运行以下代码后,这个假设被证明是错误的:

       DataTable table1 = new DataTable("Customers");

table1.Columns.Add(new DataColumn("CustomerID", typeof(int)));
table1.Columns.Add(new DataColumn("CustomerName", typeof(string)));

DataTable table2 = new DataTable("Orders");
table2.Columns.Add(new DataColumn("OrderID", typeof(int)));
table2.Columns.Add(new DataColumn("CustomerID", typeof(int)));

DataSet dataSet = new DataSet();
dataSet.Tables.AddRange(new DataTable[] { table1, table2 });
dataSet.EnforceConstraints = true;

DataRelation dataRelation = new DataRelation("CustomerOrders", table1.Columns["CustomerID"],
table2.Columns["CustomerID"], true);
dataSet.Relations.Add(dataRelation);

Debug.WriteLine("No. of constaints in the child table = {0}", table2.Constraints.Count);

dataRelation.ChildKeyConstraint.AcceptRejectRule = AcceptRejectRule.None;
dataRelation.ChildKeyConstraint.DeleteRule = Rule.Cascade;
dataRelation.ChildKeyConstraint.UpdateRule = Rule.Cascade;

table1.Rows.Add(new object[] { 11, "ABC" });
table1.Rows.Add(new object[] { 12, "XYZ" });

table2.Rows.Add(new object[] { 51, 12 });
table2.Rows.Add(new object[] { 52, 11 });
table2.Rows.Add(new object[] { 53, 11 });

table1.Rows.RemoveAt(0);
table1.AcceptChanges();
table2.AcceptChanges();

Debug.WriteLine("No of rows in the parent table = {0}", table1.Rows.Count);
Debug.WriteLine("No of rows in the child table = {0}", table2.Rows.Count);

以上代码的输出为:

没有。子表中的约束数 = 1
父表中的行数 = 1
子表中的行数 = 1

谢谢,
迪内什

最佳答案

为避免级联,需要将DeleteRuleUpdateRule设置为Rule.None

我不确定,但我相信 AcceptRejectRule 只会影响接受/拒绝命令本身是否级联。在您的代码中,我猜想更改已经级联(因为这就是 DeleteRuleUpdateRule 的设置方式)但只有 table1 已被接受; table2 上的更改被接受。

关于c# - ForeignKeyConstraint.AcceptRejectRule 在 ADO.Net 中的用途?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10719977/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com