DataSetに入力するとき、DataAdapterのMissingSchemaActionに「AddWithKey」値を使用しています。MSDNによると:
データを入力する前にスキーマ情報をDataSetに追加すると、主キー制約がDataSetの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を取得できません。これは(主キーを取得するために)可能ですか?
編集:最初、私はこれが参加であることに気づいていませんでした。ただし、PrimaryKeyを返すINNERJOINSをテストしました。犯人はこれがOUTERJOINであるという事実のようです。そこで、タイトルを変更しました。