public interface IGenericRepository<TEntity> where TEntity : class
{
IQueryable<TEntity> GetAll();
IQueryable<TEntity> FindBy(Expression<Func<TEntity , bool>> predicate);
void Add(TEntity entity);
void Delete(TEntity entity);
void Edit(TEntity entity);
void Save();
}
    public class GenericRepository<TEntity> : IGenericRepository<TEntity> where TEntity : class
{
private readonly DbContext _context;
private readonly IDbSet<TEntity> _entities; public GenericRepository(DbContext context)
{
this._context = context;
_entities = _context.Set<TEntity>();
} public virtual IQueryable<TEntity> GetAll()
{
IQueryable<TEntity> query = _entities;
return query;
} public IQueryable<TEntity> FindBy(Expression<Func<TEntity, bool>> predicate)
{
IQueryable<TEntity> query = _entities.Where(predicate);
return query;
} public virtual void Add(TEntity entity)
{
_entities.Add(entity);
} public virtual void Delete(TEntity entity)
{
_entities.Remove(entity);
} public virtual void Edit(TEntity entity)
{
// entity.State = EntityState.Modified;
} public virtual void Save()
{
//_entities.SaveChanges();
}
}

 

    public class MyContext : DbContext
{
public MyContext(){} public MyContext(string nameOrConnectionString)
: base(nameOrConnectionString)
{
} protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>(); //取消级联删除设置 modelBuilder.Entity<Area>().ToTable("Area");
base.OnModelCreating(modelBuilder);
} public DbSet<Area> Area { get; set; }
}
    public class AreaRepository : IAreaRepository
{
private GenericRepository<Area> internalGenericRepository; public AreaRepository(GenericRepository<Area> internalGenericRepository)
{
this.internalGenericRepository = internalGenericRepository;
} public List<Area> GetAllProvince()
{
var query = from o in this.internalGenericRepository.GetAll()
//where o.AreaTypeID == AreaTypeEnum.Province
select o; return query.ToList();
}
}
public class AreaService : IAreaService
{
private readonly IAreaRepository _AreaRepository; public AreaService(IAreaRepository areaRepository)
{
this._AreaRepository = areaRepository;
} public List<DictionaryEntry> ProvinceList {
get {
var query = from o in this._AreaRepository.GetAllProvince()
select new DictionaryEntry(o.Name, o.Id); return query.ToList();
}
}
}
IUnityContainer  container = new UnityContainer();
container.RegisterInstance<DbContext>(new MyContext("ConnectionString")); //注册实例
container.RegisterType<IAreaService, AreaService>();
container.RegisterType<IAreaRepository, AreaRepository>();
container.RegisterType(typeof(IGenericRepository<>), typeof(GenericRepository<>)); var IAreaService = container.Resolve<IAreaService>(); //实例化接口
Console.WriteLine(IAreaService.ProvinceList.Count());

最新文章

  1. 第十五课:奇葩的元素节点iframe
  2. javascript中获取元素节点的文本
  3. Autodesk 最新开发技术研讨会 -8月22日-Autodesk北京办公室
  4. Linux添加新硬盘自动挂载硬盘
  5. LevelDB源码之四LOG文件
  6. smaa github iryoku
  7. ubuntu nginx 伪静态 设置
  8. ActiveMQ in Action(5) - Clustering
  9. HttpURLConnection请求网络数据的GET请求
  10. Head First Java设计模式思维导图总结
  11. UVA12545-Bits Equalizer(思维)
  12. 十分钟学会Java8:lambda表达式和Stream API
  13. 复习reactnative....
  14. “流式”前端构建工具——gulp.js 简介
  15. ActiveMQ使用介绍及实例
  16. 自学Linux Shell3.5-目录处理命令mkdir rmdir
  17. 集合(4)—Collection之Set的使用方法
  18. Node的REPL环境
  19. 【转载】 强化学习(四)用蒙特卡罗法(MC)求解
  20. 调用DATASNAP+FIREDAC的远程方法有时会执行二次SQL或存储过程的BUG(转永喃兄)

热门文章

  1. HDU 5596/BestCoder Round #66 (div.2) GTW likes math 签到
  2. DB2行转列、列转行等操作
  3. javascript把IP地址转为数值几种方案,来挑战一下效率吧
  4. hihoCoder 1082然而沼跃鱼早就看穿了一切 (字符串处理)
  5. Mac 切换Windows 使用虚拟机, 不推荐双系统
  6. HDU 4609 3-idiots(FFT)
  7. python 统计文本文件的行数
  8. [51NOD1181]质数中的质数(质数筛法)(欧拉筛)
  9. [HIHO1176]欧拉路&#183;一(欧拉图判定)
  10. c# -- 读取文件夹中的所有文件(备忘)