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の記事


Source: https://habr.com/ru/post/J15113/


All Articles