在c#.. Net中为DataTable设置了主键,但是异常'Table没有'抛出

本文关键字:异常 抛出 没有 Table 中为 Net DataTable 设置 | 更新日期: 2023-09-27 18:15:32

确切的例外是"System.Data。MissingPrimaryKeyException' occurred in System.Data.dll

附加信息:表没有主键

但是,我已经设置了主键。这是代码。谢谢。

DataColumn[] PrimaryKeyColumns; //Global
DataTable firstLinesDT = new DataTable();
column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "FirstLines";
column.Unique = true;
firstLinesDT.Columns.Add(column);
PrimaryKeyColumns = new DataColumn[1];
PrimaryKeyColumns[0] = column;
firstLinesDT.PrimaryKey = PrimaryKeyColumns;  
column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.ColumnName = "Length";
firstLinesDT.Columns.Add(column);
column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "FilePath";
firstLinesDT.Columns.Add(column);
**// EXCEPTION THROWN AT FIND OPERATION** 
DataRow foundRow = firstLinesDT.NewRow();
foundRow = firstLinesDT.Rows.Find(line);

根据msdn,这就是主键应该如何设置的http://msdn.microsoft.com/en-us/library/system.data.datatable.primarykey.aspx

在c#.. Net中为DataTable设置了主键,但是异常'Table没有'抛出

我有同样的问题和PrimaryKey。长度为0,因为我在用适配器的行填充DataTable之前声明了主键数组。尝试先用数据填充

我不是100%确定,但我相信在设置所有其他列之前,您不会添加主键。

换句话说,将firstLinesDT.PrimaryKey = PrimaryKeyColumns;移动到添加FilePath列的点之后。

我不知道这是否回答了你的问题,因为你的代码不包括DataView,有可能你把它遗漏了,因为你不认为它在示例中很重要。

但是,将表转换为DataView,然后返回ToTable(),将删除PrimaryKey。