0

私は長い間 ORM を使用してきましたが、dotnet での基本的なデータ処理スキルのほとんどを忘れてしまったようです :(

このようなことをすることはありますか?

        DataSet ds = new DataSet();
        var compiledConnection = new SqlConnection(cDbConnectionString);
        SqlDataAdapter daChart = new SqlDataAdapter("select * from Chart", compiledConnection);
        daChart.Fill(ds, "chart");

        if (ds.Tables["chart"].Rows.Count > 0)
        {
            var sourceConnection = new SqlConnection(sourceDbConnectionString);
            SqlDataAdapter daSource = new SqlDataAdapter("select * from source", sourceConnection);
            daSource.Fill(ds, "source");

            DataRelation chart_source = new DataRelation("dr", ds.Tables["chart"].Columns["intItemId"],
                   ds.Tables["source"].Columns["intRowId"], false);
            ds.Relations.Add(chart_source);
        }

次に、テーブル「チャート」の列の 1 つを使用して、テーブル「ソース」のデータをデータ関係全体で並べ替えますか?

(だれかが尋ねる前に、これら 2 つのテーブルは別々のサイトにある SqlServer の別々のインスタンスにあるため、データを 1 つのテーブルとしてプルするだけでは簡単な作業ではありません。したがって、このアプローチ)

乾杯、マット

4

2 に答える 2

0

提案していただきありがとうございますが、LINQ を使用するとより簡単に実行できることがわかりました。

            DataTable source = ds.Tables["source"];
            DataTable chart = ds.Tables["chart"];

            var joinedTable =
                from s in source.AsEnumerable()
                join c in chart.AsEnumerable()
                on s.Field<Int64>("intRowId") equals
                    c.Field<Int64>("intItemId")
                select new
                {
                    intRowId = s.Field<Int64>("intRowID"),
                    strTitle = s.Field<string>("strTitle"),
                    intWeight = c.Field<Int64>("intWeight")
                };

            var sortedTable = from j in joinedTable
                              orderby j.intWeight descending
                              select j;
于 2011-10-07T09:35:36.080 に答える
0

これは、外部キーに相当するものを作成するだけです。INNER JOIN に相当するものが必要なようです。

リレーションシップの作成に加えて、一方のすべての列を他方に追加し、ループして行を埋め、GetParentRows を行う必要があります。MS には、いくつかの優れた出発点コードがあります。

http://support.microsoft.com/kb/326080

編集。リンク サーバーを作成し、[サーバー].[データベース].[所有者].[テーブル] の 4 つの部分名を使用して、SQL バージョンを実行することもできます。

于 2011-10-06T15:09:54.870 に答える