public int ShardingKey { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new TableMap(this.ShardingKey));对应分表
base.OnModelCreating(modelBuilder);
}
应用程序运行时EF只调用“OnModelCreating”方法一次——然后就会自动缓存“ModelBuilder”的结果。 我现在想通过办法控制自动缓存。查看了EF源码OnModelCreating方法 有这么一句More control over caching is provided through use of the DbModelBuilder and DbContextFactory 但是一直没找到方法解决 求解决方法
解决了么? 怎么解决的勒?
微软官方说明:http://msdn.microsoft.com/zh-cn/library/system.data.entity.dbcontext.onmodelcreating(v=vs.113).aspx
通常,在创建派生上下文的第一个实例时仅调用此方法一次。 然后将缓存该上下文的模型,并且该模型适用于应用程序域中的上下文的所有后续实例。 通过在给定的 ModelBuidler 上设置 ModelCaching 属性可禁用此缓存,但注意这样做会大大降低性能。 通过直接使用 DbModelBuilder 和 DbContextFactory 类来提供对缓存的更多控制。但是我没有找到ModelCaching这个属性。
最近是解决了吗?怎么解决的。能说下吗
当时思路搞错了,后面采用了另外的解决方法直接执行的SQL语句
@sky_net: 我也是搞了2天还没有突破,估计这个就是框架的限制,我也查了查ef的api没发现有什么突破的地方。还在研究,不知道后续你还有研究吗?有什么想法没
@sky_net: 怎么弄啊,朋友,我被困扰了很多天
你代码修改下Entity 的最后修改时间,估计它就会执行了。