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