大叔 EF 来分析 EntityFrameworks.Data.Core 2
Extensions
1
DbCommand拦截器扩展
DbCommandInterceptorExtensions
2
Class for IQuerable extensions methods
Include method in IQueryable ( base contract for IObjectSet ) is
intended for mock Include method in ObjectQuery{T}.
Paginate solve not parametrized queries issues with skip and take L2E methods
IQueryableExtensions
3
ObjectContext扩展方法
ObjectContextExtensions
4
sql函数的扩展类
SqlFunctionExtensions
----------------------------------------------------------------------------
DbContextRepository<TEntity>
DbContext上下文仓储功能类,领域上下文可以直接继承它
生命周期:数据上下文的生命周期为一个HTTP请求的结束
相关说明:
/// 1 领域对象使用声明IRepository和IExtensionRepository接口得到不同的操作规范
/// 2 可以直接为上下注入Action<string>的委托实例,用来记录savechanges产生的异常
/// 3 可以订阅BeforeSaved和AfterSaved两个事件,用来在方法提交前与提交后实现代码注入
/// 4 所有领域db上下文都要继承iUnitWork接口,用来实现工作单元,这对于提升程序性能与为重要
DbContextRepository<TEntity>
继承: IExtensionRepository<TEntity>
约束 where TEntity : class
-------------------------------------------------------------------
MemorySet<TEntity>
/// In memory IObjectSet. This class is intended only
/// for testing purposes.
继承 IObjectSet<TEntity>
约束 where TEntity : class
-------------------------------------------------------------------
MockRepository<TEntity>
模拟测试数据上下文,它的生命周期为一个调试上下文的结束
继承 IExtensionRepository<TEntity> 扩展的Repository操作规范
-------------------------------------------------------------------
ObjectContextRepository<T>
/// EF ORM 操作功能类
/// 它不是抽象类,它在基础设施层会以基类或者功能对象的方式出现
继承 IExtensionRepository<TEntity> 扩展的Repository操作规范