首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET MVC4 + EF5 + EasyUI + Unity2.x 後台管理系統實戰(五):EF 實體操作與分層架構示範

     編輯:關於ASP.NET

前言

前幾講已建立解決方案結構,本講將透過一個實際範例(SysSample 實體),示範 Controller、BLL、DAL 三層如何協作,並展示 Entity Framework 5.0 的基本增刪改查操作代碼。

資料存取介面 (IDAL)

using App.Models;
using System.Linq;

namespace App.IDAL {
  public interface ISysSampleRepository {
    IQueryable<SysSample> GetList(DBContainer db);
    int Create(SysSample entity);
    int Delete(string id);
    int Edit(SysSample entity);
    SysSample GetById(string id);
    bool IsExist(string id);
  }
}

資料存取實作 (DAL)

using System;
using System.Linq;
using App.IDAL;
using App.Models;
using System.Data;

namespace App.DAL {
  public class SysSampleRepository : ISysSampleRepository, IDisposable {
    public IQueryable<SysSample> GetList(DBContainer db) {
      return db.SysSample.AsQueryable();
    }

    public int Create(SysSample entity) {
      using (DBContainer db = new DBContainer()) {
        db.SysSample.AddObject(entity);
        return db.SaveChanges();
      }
    }

    public int Delete(string id) {
      using (DBContainer db = new DBContainer()) {
        SysSample entity = db.SysSample.SingleOrDefault(a => a.Id == id);
        if (entity != null) db.SysSample.DeleteObject(entity);
        return db.SaveChanges();
      }
    }

    public int Edit(SysSample entity) {
      using (DBContainer db = new DBContainer()) {
        db.SysSample.Attach(entity);
        db.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
        return db.SaveChanges();
      }
    }

    public SysSample GetById(string id) {
      using (DBContainer db = new DBContainer()) {
        return db.SysSample.SingleOrDefault(a => a.Id == id);
      }
    }

    public bool IsExist(string id) {
      using (DBContainer db = new DBContainer()) {
        return GetById(id) != null;
      }
    }

    public void Dispose() { }
  }
}

架構說明

  • Controller:負責接收請求、呼叫 BLL、回傳視圖或 JSON
  • BLL:處理業務邏輯、驗證、交易控制
  • DAL:專注資料存取,封裝 EF 操作細節
  • 介面 (IBLL/IDAL):定義契約,實現依賴倒置,利於單元測試與替換實作

本講代碼為教學示範,實際專案中建議加入例外處理、記錄器、交易範圍等企業級模式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved