Linqの基本。 Linqおよびn層アーキテクチャ

Microsoftは、Linqと呼ばれる.NETデータ処理言語の新しい学習しやすく、非常に強力で柔軟な拡張機能を提供しています。



複数レベルのアプリケーションで、オブジェクトのセットを取得するような方法でデータプロバイダーを設計する方法は?



たとえば テーブル tbCustomers((Int64)CustID、(String)Name、(int32)Age) があり Customers クラスがあり ます。



パブリック クラスの 顧客

{

    private Int64 _CustID;

    パブリック Int64 CustID

    {

        get { return _CustID; }

        {_CustID = value ; }

    }



    プライベート ストリング _Name;

    公開 文字列

    {

        get { return _Name; }

        {_Name = value ; }

    }



    // Int32型はnull可能

    プライベート int32 _年齢;

    パブリック Int32 年齢

    {

        get { return _Age; }

        {_Age = value ; }

    }



    // 初期化子

    公開顧客()

    {

    }

   

    パブリックカスタマー( Int64 CustID、 string Name、 Int32 ?Age)

    {

        _CustID = CustID;

        _Name =名前;

        _Age =年齢;

    }



    //データプロバイダーからオブジェクトのセットを取得します

    public static List < 顧客 > GetCustomers()

    {

        リターン CustomersData .GetAllCustomers();

    }

}



プロバイダーから Customers オブジェクトのセットを取得する必要があります



この問題の標準的な解決策はcです。 NET 2.0は System 名前空間の使用です データ SqlClient



パブリック 静的 クラス CustomersData

{

    // SqlClient を使用する

    public static List < 顧客 > GetAllCustomers()

    {

        リスト < 顧客 > lst = 新しい リスト < 顧客 >();

        使用SqlConnection conn = new SqlConnection"データソース= ..." ))

        {

            conn.Open();

            SqlCommand cmd = new SqlCommand"SELECT CustID、Name、Age FROM tbCustomers" 、conn);

            SqlDataReader reader = cmd.ExecuteReader();

            while (reader.Read())

            {

                lst.Add( new Customers (( Int64 )reader [ “ CustID” ]、( String )reader [ “ Name” ]、( Int32 )?reader [ “ Age” ]);

            }

        }

        return lst;

    }

}



Linq を使用する場合、オブジェクト初期化子を使用して匿名型からデータセットを取得できます。



パブリック 静的 クラス CustomersData

{

    // Linq を使用する

    public static List < 顧客 > GetAllCustomers()

    {

        LinqDcDataContext db = new LinqDcDataContext ();

        IEnumerable < 顧客 >結果= db.tbCustomers.Select(c => 新規 顧客 (c.CustID、c.Name、c.Age));

        // IEnumerable <Customers> リスト<Customers>に 追加

        新しい リスト < 顧客 >(結果)を返します。

    }

}









n層アーキテクチャに関する元のLinqの記事



All Articles