3

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であるという事実のようです。そこで、タイトルを変更しました。

4

1 に答える 1

2

msdnから:

SelectCommandがOUTERJOINの結果を返す場合、DataAdapterは結果のDataTableにPrimaryKey値を設定しません。重複する行が正しく解決されるようにするには、PrimaryKeyを自分で定義する必要があります。

于 2011-02-24T18:40:19.740 に答える