DataTable.Load方法仅在使用新记录进行更新时不起作用

时间:2015-06-26 11:54:38

标签: c# sql vb.net datatable

我有一个SQL表需要使用另一个表中的数据进行更新。

如果有新记录,则可以使用并记录新记录,但如果现有记录有更新,则不会更新记录中的名称。

示例在VB.Net中,但欢迎您使用C#代码回复。

        Dim workMembers As DataTable = New DataTable()
        Dim extMembers As New DataTableReader(GetExternalMembers())

        Using con As New SqlConnection(c.ConnectionString)
            Using sda As New SqlDataAdapter("Select id, name from members", con)
                sda.Fill(workMembers)
                workMembers.Load(extMembers, LoadOption.PreserveChanges)
                sda.Update(workMembers)
            End Using
        End Using

1 个答案:

答案 0 :(得分:0)

workMembers.Load从外部表加载记录并将它们标记为未更改,因为表中已存在记录。请参阅备注下的DataTable.Load Method,第二段。您需要循环记录并使用SetModified方法将每个修改的记录设置为Modified。 TnTinMn是正确的,您的表定义需要在定义后附加主键才能支持合并。见DataTable.PrimaryKey Property