如何使用数据集在 C# 或 dotnet 中查找主键列名称?
Posted
技术标签:
【中文标题】如何使用数据集在 C# 或 dotnet 中查找主键列名称?【英文标题】:How to find primary key column name in C# or dotnet using dataset? 【发布时间】:2021-08-11 11:31:13 【问题描述】:我想从获取的数据集中查找主键列名,但是当我在调试模式下运行应用程序时,没有检索到主键。虽然在 asp.net 中有预定义的属性可以使用 datacolumn 获取主键。我写的代码附在下面。
var dataSetUpdate = new DataSet();
//Convert Xml string into Dataset/Datatable
using (var stringReader = new StringReader(tableXml))
dataSetUpdate.ReadXml(stringReader, XmlReadMode.ReadSchema);
DataColumn[] PrimaryKeys;
PrimaryKeys = dataSetUpdate.Tables[0].PrimaryKey;
string PrimaryKeyColumnName;
//PrimaryKeys.Length value is coming zero when I checked in debug mode
for(int j=0;j<PrimaryKeys.Length;j++)
PrimaryKeyColumnName = PrimaryKeys[j].ColumnName;
我获取主键的方式是否正确?
【问题讨论】:
xml 文件是一个文本文件。发布文本以获得更多帮助。 @jdweng xml 字符串太大 你能贴一张截图还是只贴一张表格? 我不确定导入到数据表/数据集的 xml 文件是否会导致 PK 设置? 【参考方案1】:看起来您正在将单个属性分配给数组对象PrimaryKeys = dataSetUpdate.Tables[0].PrimaryKey;
尝试将该行更改为primaryKeys = dataSetUpdate[0]
,这也是假设您的目标表确实位于索引0,否则您只需检查dataSetUpdate.Tables
中的目标表是什么索引
PrimaryKeys = dataSetUpdate.Tables[0]; //primary key property removed here, first debug the dataSet.Tables object and see if there's data at all
string PrimaryKeyColumnName;// consider camel casing primaryKeyColumn name
for(int j=0;j<PrimaryKeys.Length;j++)
PrimaryKeyColumnName = PrimaryKeys[j].PrimaryKey; //primary key moved here or you can stick with columnName
【讨论】:
以上是关于如何使用数据集在 C# 或 dotnet 中查找主键列名称?的主要内容,如果未能解决你的问题,请参考以下文章
C# dotnet 使用 OpenXml 关闭时不自动保存文档方法