4

当我将第二个表(dtResult)添加到数据集时,它给出了错误

名为“Table”的 DataTable 已属于此 DataSet。

DataTable dtSession = new DataTable();
DataTable dtResult= new DataTable();
dtResult.TableName = "A";
dtSession.TableName = "B";
dtSession = objOpt.GetSearchDetails().Copy();
ds.Tables.Add(dtSession);
dtResult = objOpt.Search_Synchronous().Copy();
ds.Tables.Add(dtResult);

提前致谢

4

2 回答 2

10

您需要在从您的方法中获取副本并将其添加到DataSet.

DataTable dtResult= new DataTable();

dtSession = objOpt.GetSearchDetails().Copy();
dtSession.TableName = "B";
ds.Tables.Add(dtSession);


dtResult = objOpt.Search_Synchronous().Copy();
dtResult.TableName = "A";
ds.Tables.Add(dtResult);

由于您从方法中获取副本,objOpt.GetSearchDetails().Copy()并且objOpt.Search_Synchronous().Copy()它们正在覆盖之前分配给表的名称,并且这两个都返回带有名称的表Table,这就是您收到此错误的原因

于 2012-08-24T11:42:22.747 回答
0

我今天遇到了这个异常,但它与添加 DataTable 无关。

我有一个 ASP.Net Core WebApi,在 Post 和 Put 端点中,我试图保存/更新新记录,并在数据库(在同一个表中)中搜索具有相同详细信息的现有记录,如果这样的记录存在,要更新它。

当它试图保存这些更改时,我遇到了这个异常。

解决方案是将其拆分,首先保存新/更新的记录...

//  Avoid an "A DataTable named 'Users' already belongs to this DataSet." exception
await _context.SaveChangesAsync();

...然后检查现有记录,如有必要进行更新,然后进行单独保存...

await _context.SaveChangesAsync();

是的,这很奇怪,但保存两次为我解决了这个问题。

(我很感激这并不能回答这个确切的 StackOverflow 问题,但是对于任何在遇到这个措辞奇怪的异常时偶然发现此页面的人来说,这将是一个救命稻草!)

于 2021-11-08T14:39:23.120 回答