EFCore分表实现
实现原理
当我们new
一个上下文DbContext
后, 每次执行CURD方式时 ,都会依次调用OnConfiguring()
,OnModelCreating()
两个方法。
OnConfiguring()
我们将用来替换一些服务实现,以支持分表的工作OnModelCreating()
我们将用来重新实现 实体与数据库表 的映射关系
每次调用OnModelCreating()
时,会判断实体与数据库表的映射关系有没有改变,如果改变则采用新的映射关系。
判断是否发生改变,通过替换 IModelCacheKeyFactory
接口的实现来完成。详情可见:在具有相同 DbContext 类型的多个模型之间进行交替
IModelCacheKeyFactory
实现
DbContextBase
是一个DbContext
的实现,,ShardingRule
是DbContextBase
的一个共有属性。
根据分表规则的不同,每次的映射关系也会不同。
相关文章