填充 DataSet 时,我使用 DataAdapter 的 MissingSchemaAction 的“AddWithKey”值。根据 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。因此,我更改了标题。