zoukankan      html  css  js  c++  java
  • EF Unit Of Work

    BaseEntity, 所有的业务表都继承这个类,每个表的主键都是GUID, 主键名Id.

    public abstract class BaseEntity{
         public BaseEntity()
         {
              this.Id = Guid.NewGuid();
         }      
         public vritual Guid Id{get;set;}
    }
    

     Student, 例子类

    public Student:BaseEntity
    {
         public Name {get;set;}   
    }
    

     StudentContext

    public class StudentContext : DbContext
    {
        public DbSet<Student> Students {get;set;}
    }
    

     IRepository<T> where T :BaseEntity

    public IRepository<T> where T :BaseEntity
    {
        T GetById(object Id);
        void Insert(T entity);
        void Update(T entity);
        void Delete(T entity);
        IQueryable<T> Table{get;}
    // other common operations ...
    }
    

     EFRepository<T>

    public class EFRepository<T>:IRepository<T> where T: BaseEntity
    {
        DbContext _db;
        public EFRepository(DbContext db)
        {
            _db = db;
        }
        // implement the operations below. GetById, Insert, Update.....
    }
    

     IUnitOfwork

    public interface IUnitOfWork
    {
        IRepository<Student> StudentRepository {get;set}
        // add other repositories below.
    
        //commit 
        void Save();
    
        Task SaveAsync();
    }
    

     UnitOfWork

    public class UnitOfWork:IUnitOfWork
    {
        DbContext _db;
        public UnitOfWork(
                        DbContext db,
                        IRepository<Student> studentRepository){
         StudentRepository =studentRepository;
         _db =db;      
        }
        public IRepository<Student> StudentRepository {get;set}
        // add other repositories below.
    
        //commit 
        public void Save()
        {
            _db.SaveChanges();
        }
    
        public async Task SaveAsync()
        {
            await _db.SaveChangesAsync();
        }
    }
    

     ISudentService, UI 业务操作的接口和实现

    public interface IStudentService
    {
        void Create(Student stud);
    }
    
    
    public class StudentService:IStudentService
    {
        IUnitOfWork _uof;
        public StudentService(IUnitOfWork uof)
        {
            _uof = uof;
        }
        pubilc void Create(Student stud)
        {
            _uof.StudentRepository.Insert(stud);
            _uof.Save();
        }
    }        
    

     http://files.cnblogs.com/files/sgciviolence/RightManager.zip

  • 相关阅读:
    第二次项目冲刺(Beta阶段)--第六天
    Struts2+Hibernate简单整合
    Struts中Action的相关知识点
    struts基础配置
    servlet基础及过滤器简介
    JSP中验证码问题
    mybatis中插入数据(id为主键的情况)以及查询数据
    Mybatis基础配置及使用
    JDBC访问数据库
    Mysql中的一些基本操作
  • 原文地址:https://www.cnblogs.com/sgciviolence/p/5122076.html
Copyright © 2011-2022 走看看