移行可能なデータ・アクセス・レイヤの呼び出し(2)

2141 ワード

using System;

using System.Data;

using System.Data.Common;

using System.Configuration;    



namespace DAL

{

   public class CustomersData

   {

      public DataTable GetCustomers()

      {

         string ConnectionString = 

            ConfigurationSettings.AppSettings

            ["ConnectionString"];

         DatabaseType dbtype = 

            (DatabaseType)Enum.Parse

            (typeof(DatabaseType),

            ConfigurationSettings.AppSettings

            ["DatabaseType"]);



         IDbConnection cnn = 

            DataFactory.CreateConnection

            (ConnectionString,dbtype);



         string cmdString = "SELECT CustomerID" +

            ",CompanyName,ContactName FROM Customers";



         IDbCommand cmd = 

            DataFactory.CreateCommand(

            cmdString, dbtype,cnn);



            DbDataAdapter da = 

               DataFactory.CreateAdapter(cmd,dbtype); 



         DataTable dt = new DataTable("Customers");



         da.Fill(dt);



         return dt;

      }

        

      public CustomersDS GetCustomerOrders(string CustomerID)

      {

         //  

         return null;

      }

      public CustomersList GetCustomersByCountry

         (string CountryCode)

      {

         //  

         return null;

      }

      public bool InsertCustomer()

      {

         //  

         return false;

      }

   }

}


CustomerDataクラスのGetCustomers()メソッドでは、プロファイルの情報を読み込むことができます.DataFactoryクラスを使用して、特定の接続文字列からXxxConnectionインスタンスを作成し、基本データ・ソースに特定の依存性がない残りのコード部分を記述できます.
データ・レイヤとインタラクティブなビジネス・レイヤ・クラスの例は、次のように見えます.
using System;

using System.Data; 

using DAL;



namespace BLL

{

    public class Customers

    {

        public DataTable GetAllCustomers()

        {

            CustomersData cd = new CustomersData();  

            DataTable dt = cd.GetCustomers();

            return dt;

        }

        public DataSet GetCustomerOrders()

        {

            //  

            return null;

        }

    }

}