asp.net 名为“Table”的数据表已属于此数据集

nbysray5  于 2023-02-01  发布在  .NET
关注(0)|答案(3)|浏览(185)

当我向数据集添加第二个表(dtResult)时,它出现错误
名为“Table”的数据表已属于此数据集。

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);

先谢了

ogq8wdun

ogq8wdun1#

从方法中获取副本之后,在将其添加到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的表,这就是您收到此错误的原因

1u4esq0p

1u4esq0p2#

我今天遇到了这个异常,但它与添加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的确切问题,但是对于任何无意中进入这个页面的人来说,当他们遇到这个奇怪的异常时,这将是一个救星!)

4xrmg8kj

4xrmg8kj3#

我在对存储过程运行command.ExecuteDataSet时收到此错误,我在该存储过程中声明了一个表变量,然后多次查询该表以返回数据集中的多个数据表。由于每个数据表都是从同一个表中查询的,因此它们都具有相同的名称“@ t”。我能够通过在存储过程中创建多个具有不同名称的表变量来解决此错误。

相关问题