【发布时间】:2011-03-02 17:59:52
【问题描述】:
在填充数据集时,我将“AddWithKey”值用于 DataAdapter 的 MissingSchemaAction。根据 MSDN:
向数据集添加架构信息 在用数据填充之前确保 主键约束是 包含在 DataTable 对象中 数据集。
但是,当我执行以下操作时:
DataColumn[] foo = TheDataSet.Tables["Table1"].PrimaryKey;
我得到 foo.Length 为 0。除此之外我还需要做些什么吗?:
string TheQuery = "SELECT * FROM Table1 LEFT OUTER JOIN Table2 ON Table1.EVENT_NUM = Table2.EVENT_USER_NUM;
using (SqlDataAdapter TheDataAdapter = new SqlDataAdapter(TheQuery, TheConnection)
{
TheDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
TheDataAdapter.Fill(TheDataSet, "Table1");
}
注意,如果我的查询是:
string TheQuery = "SELECT * FROM Table1";
一切都会好的。但是,如果有连接,我不会得到 PrimaryKey。这甚至可能(获取主键)吗?
编辑:起初,我没有意识到这是一个 JOIN。虽然,我已经测试了会返回 PrimaryKey 的 INNER JOINS。罪魁祸首似乎是这是一个 OUTER JOIN。于是,我改了标题。
【问题讨论】:
-
表有主键吗?
-
新信息:是的,有一个主键,但我刚刚意识到这是一个 JOIN 查询(两个表都有一个主键)
-
请不要在标题中包含 C# 之类的标签。将它们保存在它们所属的标签中。
标签: c# database dataset dataadapter