in

@Prog! - ASP.NET(C#) AJAX -

ASP.NET(C#) 2.0 & ASP.NET Ajax (ATLAS) のメモ書き

LINQ 関連データを1回のアクセスで収得する

最新の投稿は、投稿日時: 2007/12/30 13:04 投稿者: ASANO です。スレッドには 4 件の返答があります。
ページ 1 / 1 (5 アイテム)
投稿の並べ替え: 前へ 次へ
  • 2007/12/30 12:59

    LINQ 関連データを1回のアクセスで収得する

    1. LINQ to SQL クラスを追加し、テーブルを追加する。
    2. 関連付けを行う。Participating Properties:Table_1.ID -> Table_3.ID

  • 2007/12/30 13:00 回答元:

    Re: LINQ 関連データを1回のアクセスで収得する

    using System;
    using System.Linq;
    using System.Data.Linq;
    using System.IO;

    namespace ConsoleApplication5
    {
        class Program
        {
            static void Main(string[ args)
            {
                using (DataClasses1DataContext db = new DataClasses1DataContext())
                {
                    StreamWriter sw = new StreamWriter(@"d:\log.txt");
                    sw.AutoFlush = true;
                    TextWriter tw = TextWriter.Synchronized(sw);

                    db.Log = tw;

                    var rs = from t in db.Table_1 select t;

                    foreach (var t1 in rs)
                    {
                        foreach (var t3 in t1.Table_3)
                        {
                            Console.WriteLine("{0}:{1}", t1.ID, t3.FirstName);
                        }
                    }
                }

                Console.Read();
            }
        }
    }

  • 2007/12/30 13:01 回答元:

    Re: LINQ 関連データを1回のアクセスで収得する

    上記の実行結果

    SELECT [t0].[ID], [t0].[Number]
    FROM [dbo].[Table_1] AS [t0]
    -- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.21022.8

    SELECT [t0].[ID], [t0].[FirstName], [t0].[LastName], [t0].[Birthday]
    FROM [dbo].[Table_3] AS [t0]
    WHERE [t0].[ID] = @p0
    -- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [0]
    -- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.21022.8

    SELECT [t0].[ID], [t0].[FirstName], [t0].[LastName], [t0].[Birthday]
    FROM [dbo].[Table_3] AS [t0]
    WHERE [t0].[ID] = @p0
    -- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [1]
    -- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.21022.8

    SELECT [t0].[ID], [t0].[FirstName], [t0].[LastName], [t0].[Birthday]
    FROM [dbo].[Table_3] AS [t0]
    WHERE [t0].[ID] = @p0
    -- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [2]
    -- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.21022.8

    タグ:
  • 2007/12/30 13:02 回答元:

    Re: LINQ 関連データを1回のアクセスで収得する

    using System;
    using System.Linq;
    using System.Data.Linq;
    using System.IO;

    namespace ConsoleApplication5
    {
        class Program
        {
            static void Main(string[ args)
            {
                using (DataClasses1DataContext db = new DataClasses1DataContext())
                {
                    StreamWriter sw = new StreamWriter(@"d:\log.txt");
                    sw.AutoFlush = true;
                    TextWriter tw = TextWriter.Synchronized(sw);

                    db.Log = tw;

                    DataLoadOptions dlo = new DataLoadOptions();
                    dlo.LoadWith<Table_1>(t => t.Table_3);
                    db.LoadOptions = dlo;

                    var rs = from t in db.Table_1 select t;

                    foreach (var t1 in rs)
                    {
                        foreach (var t3 in t1.Table_3)
                        {
                            Console.WriteLine("{0}:{1}", t1.ID, t3.FirstName);
                        }
                    }
                }

                Console.Read();
            }
        }
    }

  • 2007/12/30 13:04 回答元:

    Re: LINQ 関連データを1回のアクセスで収得する

    上記の実行結果

    SELECT [t0].[ID], [t0].[Number], [t1].[ID] AS [ID2], [t1].[FirstName], [t1].[LastName], [t1].[Birthday], (
        SELECT COUNT(*)
        FROM [dbo].[Table_3] AS [t2]
        WHERE [t2].[ID] = [t0].[ID]
        ) AS [value]
    FROM [dbo].[Table_1] AS [t0]
    LEFT OUTER JOIN [dbo].[Table_3] AS [t1] ON [t1].[ID] = [t0].[ID]
    ORDER BY [t0].[ID]
    -- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.21022.8

ページ 1 / 1 (5 アイテム)