1

SQLServerに2つの無関係なテーブルがあります。C#を介してそれらとの関係を形成したいので、SQL Serverのデータベース図に関係線などがあります(コードには、ステートメントなどを使用していないこと以外に欠陥がある可能性があります)。

私はこれまでにこのコードを持っています:

   SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=Test;Integrated Security=SSPI");

        SqlDataAdapter ad1;
        SqlDataAdapter ad2;

        DataSet ds = new DataSet();
        DataRelation dr;


        ad1 = new SqlDataAdapter("Select * from dept", con);
        ad2 = new SqlDataAdapter("select * from emp", con);
        ad1.Fill(ds, "dept");
        ad2.Fill(ds, "emp");
        DataColumn pk = ds.Tables["dept"].Columns["deptno"];
        DataColumn fk = ds.Tables["emp"].Columns["deptno"];
        dr = new DataRelation("rel", pk, fk, false)
        ds.Relations.Add(dr);

        ds.AcceptChanges();
        ad1.Update(ds, "dept");
        ad2.Update(ds, "emp");

私がこの行に到達したとき:

        dr = new DataRelation("rel", pk, fk, false)

この例外が発生します:

'column'引数をnullにすることはできません。パラメータ名:列

この方法でSQLServerで実際に関係を形成することは可能ですか?

何が得られますか?

4

2 に答える 2

2

テーブルの1つに「deptno」列がない場合を除いて、すべて問題ないように見えます。

あなたは本当に近いです、これを試してください(行末のセミコロン:)

dr = new DataRelation("rel", pk, fk, false);

これらの変更がデータベースに戻る限り、JWL_が入り始めたので、そうではありません。MSDNの宣伝文句を次に示します。

アプリケーションが関連するテーブルを操作する必要がある場合がよくあります。データセットにはデータベースのようにテーブルと列が含まれていますが、テーブルを関連付けるデータベースの機能は本質的に含まれていません。ただし、共通のキーに基づいて、親(マスター)テーブルと子(詳細)テーブルの間の関係を確立するDataRelationオブジェクトを作成できます。

于 2010-05-04T12:30:23.763 に答える
0

コードで宣言した関係は、データベースには含まれません。それはあなたのデータセット内にのみ存在します(少なくとも私はそうだと思います)。

于 2010-05-04T12:33:05.060 に答える