前幾講已建立解決方案結構,本講將透過一個實際範例(SysSample 實體),示範 Controller、BLL、DAL 三層如何協作,並展示 Entity Framework 5.0 的基本增刪改查操作代碼。
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);
}
}
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() { }
}
}
本講代碼為教學示範,實際專案中建議加入例外處理、記錄器、交易範圍等企業級模式。