gpt4 book ai didi

.net - 每次添加新行时都应该调用 AcceptChanges() 吗?

转载 作者:行者123 更新时间:2023-12-03 16:22:33 28 4
gpt4 key购买 nike

推荐哪个

while (reader.Read())  
{
table.Rows.Add(
new object[] { reader[0], reader[1], reader[2], reader[3] }
);
table.AcceptChanges();
}

或者
while (reader.Read())  
{
table.Rows.Add(
new object[] { reader[0], reader[1], reader[2], reader[3] }
);
}
table.AcceptChanges();

注意 table.AcceptChanges 的放置位置。

编辑 1

这是代码块:
protected void Page_Load(object sender, EventArgs e)
{
IDataReader reader = cust.GetCustomerOrderSummary("99999");
using (DataSet ds = new DataSet())
{
using (DataTable table =
new DataTable { TableName = "OrderSummary" })
{
DataColumn idColumn = table.Columns.Add("number", typeof(int));
table.Columns.Add("name", typeof(string));
table.Columns.Add("quantity", typeof(int));
table.Columns.Add("prev_quantity", typeof(int));
table.PrimaryKey = new DataColumn[] { idColumn };
while (reader.Read())
{
table.Rows.Add(
new object[]{ reader[0], reader[1], reader[2], reader[3] }
);
table.AcceptChanges();
}
ds.Tables.Add(table);
rptCustomerOrder report =
new rptCustomerOrder { DataSource = ds };
ReportViewer1.Report = report;
}
}
}

编辑 2
看完MSDN文章 here我决定根据以下语句(来自文章)将 AcceptChanges() 放在循环之外:

Calling AcceptChanges at the DataTable level causes the AcceptChanges method for each DataRow to be called.

最佳答案

调用AcceptChanges添加新行后实际上会变成 DataRowState您新添加的DataRow来自 AddedUnchanged .如果你继续使用它,你可能会失去对新添加的行的跟踪以及在持久性时的跟踪。 ADO.NET 将无法识别需要插入数据库的行。所以明智地选择这个选项,你甚至可能不需要它。

关于.net - 每次添加新行时都应该调用 AcceptChanges() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/821507/

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