首页 新闻 会员 周边

求EF分表方法如何控制OnModelCreating执行多次

0
悬赏园豆:50 [已关闭问题] 关闭于 2014-05-16 16:09

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  但是一直没找到方法解决  求解决方法 

sky_net的主页 sky_net | 初学一级 | 园豆:10
提问于:2013-07-07 10:14
< >
分享
所有回答(4)
1

解决了么? 怎么解决的勒?

游子善心 | 园豆:73 (初学一级) | 2014-07-12 19:14
0

微软官方说明:http://msdn.microsoft.com/zh-cn/library/system.data.entity.dbcontext.onmodelcreating(v=vs.113).aspx

通常,在创建派生上下文的第一个实例时仅调用此方法一次。 然后将缓存该上下文的模型,并且该模型适用于应用程序域中的上下文的所有后续实例。 通过在给定的 ModelBuidler 上设置 ModelCaching 属性可禁用此缓存,但注意这样做会大大降低性能。 通过直接使用 DbModelBuilder 和 DbContextFactory 类来提供对缓存的更多控制。但是我没有找到ModelCaching这个属性。

无意飞翔 | 园豆:210 (菜鸟二级) | 2015-01-07 17:55
0

最近是解决了吗?怎么解决的。能说下吗

小小微 | 园豆:204 (菜鸟二级) | 2016-09-17 20:19

 当时思路搞错了,后面采用了另外的解决方法直接执行的SQL语句

支持(0) 反对(0) sky_net | 园豆:10 (初学一级) | 2016-09-18 14:27

@sky_net: 我也是搞了2天还没有突破,估计这个就是框架的限制,我也查了查ef的api没发现有什么突破的地方。还在研究,不知道后续你还有研究吗?有什么想法没

支持(0) 反对(0) 小小微 | 园豆:204 (菜鸟二级) | 2016-09-18 14:29

@sky_net: 怎么弄啊,朋友,我被困扰了很多天

支持(0) 反对(0) 胡老湿 | 园豆:202 (菜鸟二级) | 2020-07-24 11:17
0

你代码修改下Entity 的最后修改时间,估计它就会执行了。

没有锄头 | 园豆:174 (初学一级) | 2017-11-09 18:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册