EasyFastCMS系列教學課程——1、三層框架的搭建


    在本系列教程中,我們以一個大型CMS系統的完整開發流程為例,和大家一起探討net開發的經驗和教訓。在本程序中,我們采用了流行的三層/N層框架+倉儲模式的架構模式。項目分層示意圖:

 
 
各層的主要用途:
  • EasyFast.Web ——UI展示層,系統的操作界面。
  • EasyFast.BLL ——業務邏輯層,用於處理程序中的業務邏輯。
  • EasyFast.Model  ——用於在各層之間傳遞數據。
  • EasyFast.Utility ——公共類庫
  • EasyFast.Repository ——數據操作(數據倉儲層)
  • EasyFast.DBContext ——ORM工具層
基本框架代碼:
 
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
 
namespace EasyFast.Repository.Interface
{
    public interface IRepository<T> where T : class
    {
        T GetById(int id);
        T Find(string where, string orderColumn, List<SqlParameter> parameters);
 
        int Add(T model);
        int Delete(int id);
        int Update(T model);
 
        int GetPageCount(string tableName, string where, List<SqlParameter> parameters);
        DataTable GetPageList(string tableName, string fieldNames, string where, string orderColumn, int startRecordIndex, int endRecordIndex, List<SqlParameter> parameters);
        DataTable GetDataTable(string tableName, string fieldNames, string where, string orderColumn, List<SqlParameter> parameters);
    }
}
——目錄結構:EasyFast.Repository.Interface.IRepository
 
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using EasyFast.Repository.Interface;
using System.Data;
using System.Data.SqlClient;
 
namespace EasyFast.Repository
{
    public class Repository<T> : IRepository<T> where T : class
    {
        public T GetById(int id)
        {
            T model = default(T);
            return model;
        }
        public T Find(string where, string orderColumn, List<SqlParameter> parameters)
        {
            T model = default(T);
            return model;
        }
 
        public int Add(T model)
        {
            int _result = 0;
            return _result;
        }
        public int Delete(int id)
        {
            int _result = 0;
            return _result;
        }
        public int Update(T model)
        {
            int _result = 0;
            return _result;
        }
 
        public int GetPageCount(string tableName, string where, List<SqlParameter> parameters)
        {
            int _result = 0;
            return _result;
        }
        public DataTable GetPageList(string tableName, string fieldNames, string where, string orderColumn, int startRecordIndex, int endRecordIndex, List<SqlParameter> parameters)
        {
            DataTable dt = new DataTable();
            return dt;
        }
        public DataTable GetDataTable(string tableName, string fieldNames, string where, string orderColumn, List<SqlParameter> parameters)
        {
            DataTable dt = new DataTable();
            return dt;
        }
    }
}
——目錄結構:EasyFast.Repository.Repository
 
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
using EasyFast.Repository;
using EasyFast.Repository.Interface;
 
namespace EasyFast.BLL
{
    public class BaseBLL<T> where T : class
    {
 
        IRepository<T> repository = new Repository<T>();
        protected readonly Object lockHelper = new object();
 
        #region 獲取model
        public T GetById(int id)
        {
            return repository.GetById(id);
        }
        public T Find(string where)
        {
            return repository.Find(where,"", null);
        }
        public T Find(string where, List<SqlParameter> parameters)
        {
            return repository.Find(where,"", parameters);
        }
 
        public T Find(string where, string orderColumn, List<SqlParameter> parameters)
        {
            return repository.Find(where, orderColumn, parameters);
        }
        #endregion
 
        #region 新增一條記錄
        public int Add(T model)
        {
            return repository.Add(model);
        }
        #endregion
 
        #region 刪除一條記錄
        public int Delete(int id)
        {
            return repository.Delete(id);
        }
        #endregion
 
        #region 更新一條記錄
 
        public int Update(T model)
        {
            return repository.Update(model);
        }
        #endregion
 
        #region 獲取指定條件的記錄集
        public virtual DataTable GetDataTable(string tableName, string fieldNames, string where, string orderColumn, List<SqlParameter> parameters)
        {
            return repository.GetDataTable(tableName, fieldNames, where, orderColumn, parameters);
        }
 
        public virtual DataTable GetDataTable(string fieldNames, string where, string orderColumn, List<SqlParameter> parameters)
        {
            return repository.GetDataTable("", fieldNames, where, orderColumn, parameters);
        }
 
        public virtual DataTable GetDataTable(string fieldNames, string where, List<SqlParameter> parameters)
        {
            return repository.GetDataTable("", fieldNames, where, "", parameters);
        }
 
        public virtual DataTable GetDataTable(string where, List<SqlParameter> parameters)
        {
            return repository.GetDataTable("", "*", where, "", parameters);
        }
 
        public virtual DataTable GetDataTable(string where)
        {
            return repository.GetDataTable("", "*", where, "", null);
        }
 
        public virtual DataTable GetDataTable()
        {
            return repository.GetDataTable("", "*", "", "", null);
        }
        #endregion
 
        #region 獲取指定條件的記錄數
        public virtual int GetPageCount(string tableName, string where, List<SqlParameter> parameters)
        {
            return repository.GetPageCount(tableName, where, parameters);
        }
 
        public virtual int GetPageCount(string where, List<SqlParameter> parameters)
        {
            return repository.GetPageCount("", where, parameters);
        }
 
        public virtual int GetPageCount(string where)
        {
            return repository.GetPageCount("", where, null);
        }
 
        public virtual int GetPageCount()
        {
            return repository.GetPageCount("", "", null);
        }
        #endregion
 
        #region 分頁獲取指定條件的記錄
        public virtual DataTable GetPageList(string tableName, string fieldNames, string where, string orderColumn, int startRecordIndex, int endRecordIndex, List<SqlParameter> parameters)
        {
            return repository.GetPageList(tableName, fieldNames, where, orderColumn, startRecordIndex, endRecordIndex, parameters);
        }
 
        public virtual DataTable GetPageList(string tableName, string fieldNames, string where, int startRecordIndex, int endRecordIndex, List<SqlParameter> parameters)
        {
            return repository.GetPageList(tableName, fieldNames, where, "", startRecordIndex, endRecordIndex, parameters);
        }
 
        public virtual DataTable GetPageList(string fieldNames, string where, int startRecordIndex, int endRecordIndex, List<SqlParameter> parameters)
        {
            return repository.GetPageList("", fieldNames, where, "", startRecordIndex, endRecordIndex, parameters);
        }
 
        public virtual DataTable GetPageList(string where, int startRecordIndex, int endRecordIndex, List<SqlParameter> parameters)
        {
            return repository.GetPageList("", "*", where, "", startRecordIndex, endRecordIndex, parameters);
        }
 
        public virtual DataTable GetPageList(string where, int startRecordIndex, int endRecordIndex)
        {
            return repository.GetPageList("", "*", where, "", startRecordIndex, endRecordIndex, null);
        }
 
        public virtual DataTable GetPageList(int startRecordIndex, int endRecordIndex)
        {
            return repository.GetPageList("", "*", "", "", startRecordIndex, endRecordIndex, null);
        }
        #endregion
    }
}
——目錄結構:EasyFast.BLL.BaseBLL

 

示例代碼下載: EasyFastCMS-2014.05.28.zip

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM