基於.NET的LINQ to SQL 三層架構開發之架構建立

開心笑發表於2012-06-03

寫在前面的廢話

基於.NET的LINQ to SQL 三層體系結構可分為以下幾層:Data Linq層、資料訪問層、業務邏輯層、表示層。下圖一中的箭頭符號說明了各層之間的互動情況:資料訪問層引用Data LINQ層;業務邏輯層引用資料訪問層以及Data LINQ層中的實體類;表示層引用業務邏輯層以及Data LINQ層中的實體類。

其中,Data LINQ層主要包括實體類和Data Context類。通常,一個實體類對於資料庫中的一張表。我們可以建立實體類的例項,在不同的層之間作為資料物件進行傳輸。

 

        圖 一 LINQ  to SQL  三層架構

下面以建立專案時的登入視窗為例,介紹LINQ  to SQL 的三層架構開發

準備工作

1. 首先需要一個資料庫和一張資料表,用來儲存登入人員的使用者名稱和密碼。這裡,使用的是SQL Server 2005 資料庫。資料庫表結構如圖二所示。

圖 二 資料庫User表

2. 開啟VS,新建專案 ---> 其他專案型別--->Visual Studio解決方案--->空白解決方案。如圖三所示。(這裡使用的是Visual Studio 2008)


圖 三 新建空白解決方案

3. 新增類庫。在解決方案資源管理器中新建的解決方案上右擊--->新增--->新建專案--->類庫。如圖四所示。同樣的方法需要新增BLL, DAL, DataLinq三個類庫和一個Windows窗體應用程式(如果是Web應用開發,就選擇ASP.NET Web應用程式)命名為UI。


圖 四 新增類庫專案

新增完成後的結構如圖五所示。同時在UI上右擊,設UI為啟動項。


圖 五 專案結構圖

新增引用

在解決方案資源管理器中,新增各層的引用。BLL層選擇引用--->右擊--->新增引用。如圖六所示。新增System.Data.Linq的引用。同時根據上圖一所示各層的關係,新增對DAL 和 DataLinq的專案引用。同樣的方法,DAL 層新增對System.Data.Linq和DataLinq的專案引用;DataLinq層新增對System.Data.Linq的引用;UI層新增對System.Data.Linq的引用和BLL、 DataLinq的專案引用。


圖 六 新增專案引用

到目前為止,三層架構已經建立起來。下面是給各層新增各自對應的類。

1. 首先是DataLinq層。右擊DataLinq--->新增--->新建專案--->選擇LINQ to SQL類,如圖七所示。


圖 七 新增 LINQ to SQL 類

2. 新增完成後將自動建立一個空白的設計器(.dbml檔案),並附有伺服器資源管理器 的連結, 同時也建立相關的dbml.layout 檔案(XML檔案) 和designer.cs 檔案。開啟伺服器資源管理器,並建立到資料庫的連結。


圖 八 開啟伺服器資源管理器

3. 連線資料庫。選擇工具--->新增資料庫。如圖九所示。選擇剛在新建的資料庫,確定連線資料庫。這時,就會在伺服器資源管理器出現這個資料庫。


4. 選擇要用到的資料表User,拖放到設計器上面,如下圖十。儲存檔案。現在,已經自動生成了包含相關的屬性、方法的DataContext類和實體類。


圖 十 User類

新增各層程式碼

DAL層

新建UserDAL類,新增如下程式碼

//UserDAL.cs

using DataLinq;
using System.Data.Linq;

namespace DAL
{
    public class UserDAL
    {
        private DataLinq.DBLinqDataContext objDataContext = new DataLinq.DBLinqDataContext();

        public User SelectRecordByID(string userid)
        {
            try
            {
                return (from u in objDataContext.User where u.Id == userid select u).Single();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}

BLL層

新建UserBLL類,新增如下程式碼

//UserBLL.cs

using System.Data.Linq;
using DataLinq;

namespace BLL
{
    public class UserBLL
    {
        private DAL.UserDAL objUserDAL = new DAL.UserDAL();

        public User SelectRecordByID(string userid)
        {
            return objUserDAL.SelectRecordByID(userid);
        }
    }
}

UI層程式碼

//LoginForm.cs

 private BLL.UserBLL objUserBLL = new BLL.UserBLL();
       
        private void btnSubmit_Click(object sender, EventArgs e)
        {
            string id = txtId.Text.Trim();
            string psd = txtPsd.Text.Trim();

            User localDataTable = objUserBLL.SelectRecordByID(id);

            if (localDataTable != null && localDataTable.Psd == psd)
            {
                MessageBox.Show("Success");
            }
            else
            {
                MessageBox.Show("false");
            }
        }

至此,登入介面的程式碼已經完成。可以執行一下檢視一下效果了。

下一篇:基於.NET的LINQ to SQL 三層架構開發之資料庫操作通用程式碼

相關文章