在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
我有同样的问题和PrimaryKey。长度为0,因为我在用适配器的行填充DataTable
之前声明了主键数组。尝试先用数据填充
我不是100%确定,但我相信在设置所有其他列之前,您不会添加主键。
换句话说,将firstLinesDT.PrimaryKey = PrimaryKeyColumns;
移动到添加FilePath
列的点之后。
我不知道这是否回答了你的问题,因为你的代码不包括DataView
,有可能你把它遗漏了,因为你不认为它在示例中很重要。
但是,将表转换为DataView,然后返回ToTable()
,将删除PrimaryKey。