搭建三層架構(ASP.NET MVC+EF)


昨天面試的時候最后做了一道上機題,竟然跪了,跪就跪在沒有搭好框架,連接數據庫總是程序報錯。

回來之后親自搭了一下框架,弄好后放到博客上。下圖就是搭建好后,整個框架的結構就是這樣,下面對框架中的文件進行講解。

搭建步驟:

1.數據庫建好后,由數據庫生成實體模型。

2.添加BLL、DAL層兩個類庫。

3.在DAL層先建工廠EFContextFactory.cs,下面是創建上下文對象的方法。

 

namespace DAL
{
    class EFContextFactory
    {
        #region 從線程的數據槽中獲得上下文對象
        /// <summary>
        /// 從線程的數據槽中獲得上下文對象
        /// </summary>
        /// <returns></returns>
        public static DbContext GetDbContextFromContext()
        {
            DbContext context = CallContext.GetData("Dbcontext") as mssjEntities;
            if (context == null)
            {
                context = new mssjEntities();
                CallContext.SetData("Dbcontext", context);
            }
            return context;
        }
        #endregion
    }
}

 

  4.之后是創建BaseDAL.cs,BaseDAL中先獲取EF上下文實體,然后再通過實體寫公用的方法。

namespace DAL
{
   public class BaseDAL<T> where T:class,new() { //下面是兩種寫法獲取EF上下文對象, private DbContext db = EFContextFactory.GetDbContextFromContext(); protected DbContext DataContext { get { return EFContextFactory.GetDbContextFromContext(); } } /// <summary> /// 根據查詢條件獲取單個實體 /// </summary> /// <param name="condition"></param> /// <returns></returns> public T GetModel(Expression<Func<T, bool>> condition) { return DataContext.Set<T>().Where(condition).FirstOrDefault(); } } }

5.建立文件UserDAL.cs,這個是數據表映射實體所對應的DAL文件。

namespace DAL
{
    /// <summary>
    /// UserDAL繼承BaseDAL
    /// </summary>
   public class UserDAL:BaseDAL<User> { /// <summary> /// 在這里聲明實例化一個UserDAL的對象 /// </summary> public static readonly UserDAL GetUserDAL = new UserDAL(); private UserDAL() { } } }

6.接下來在BLL層先建一個BaseBLL。

namespace BLL
{
  public abstract  class BaseBLL<T> where T:class,new() { /// <summary> /// 構造方法中,創建倉儲。 /// </summary> public BaseBLL() { SetCurrentRepository(); } /// <summary> /// CurrentRepository屬性在BaseBLL的子類中用到 /// </summary> protected BaseDAL<T> CurrentRepository { get; set; } //設置成抽象方法,子類繼承時,應該重寫抽象方法。 public abstract void SetCurrentRepository(); /// <summary> /// 根據查詢條件獲取單個實體 /// </summary> /// <param name="condition"></param> /// <returns></returns> public T GetModel(Expression<Func<T, bool>> condition) { return CurrentRepository.GetModel(condition); } } }

7.創建UserBLL.cs繼承BaseBLL.cs。

namespace BLL
{
   public class UserBLL:BaseBLL<User> { /// <summary> /// 在這里聲明實例化一個UserBLL的對象 /// </summary> public static readonly UserBLL GetUserBLL = new UserBLL(); /// <summary> /// 要對BaseBLL中的抽象方法進行實現。 /// </summary> public override void SetCurrentRepository() { CurrentRepository = UserDAL.GetUserDAL;//CurrentRepository屬性在BaseBLL中定義  } } }

8.至此,BLL、DAL層搭建完畢,接下來把數據庫的鏈接字符串復制到Web.config中,之后啟動網站。打斷點進行監視,便發現數據庫已經鏈接成功,這樣一個簡單的框架就算搭好了。

注意:1.Web層,DAL層需要引用EntityFramework的dll。因為EntityFramework有版本問題,所以都去引用Model層中bin文件夾下的dll。

         2.Model層是另外三個層必須引用的。

 


免責聲明!

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



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