首页 新闻 会员 周边

EF相关问题

0
[已解决问题] 解决于 2014-07-22 16:05

EF有缓存,我数据库有100G数据,它也缓存这么多吗?

EF的缓存策略是什么样的?

MemkoryStream ms;

using(var bmp = new Bitmap(100,25)){

using(var g = Graphics.FromImage(bmp)){

g.Clear(Color.White);

g.FillRectangle(Brushes.Red,2,2,90,31);

g.DrawString("1234",new Font("黑体",15f),Brushes.Yellow,new Point(5f,5f));

ms = new MemoryStream();

bmp.Save(ms,ImageFormat.Jpeg);

}

}

return File(ms.ToArray(),"image/jpeg")

EF
Eysa的主页 Eysa | 初学一级 | 园豆:62
提问于:2014-07-14 13:27
< >
分享
最佳答案
0

哈哈,这个你应该从数据存储层面来谈谈,EF在实质也是转成SQL语句来实现的。他只会把符合结果的数据条目加载出来。你一次加载100G的使用场景是什么样的。 

奖励园豆:5
jerry-Tom | 老鸟四级 |园豆:4077 | 2014-07-14 16:43

我想知道的是EF有没有类似内存管理这样的东东,它肯定不会是缓存所有查询出来的数据的,那岂不是就跟memcache一样了。

项目部署以后,随着时间的推移,查询、插入的数据越来越多,EF缓存的数据也越来越多吗?

Eysa | 园豆:62 (初学一级) | 2014-07-14 17:00
其他回答(3)
0

你把100G数据都读取出来了.他就缓存这100G数据,如果你有2个上下文就是100*2G

吴瑞祥 | 园豆:29449 (高人七级) | 2014-07-14 15:09

 那我服务器内存只有8G,这么说EF就报错?宕机?死机?

支持(0) 反对(0) Eysa | 园豆:62 (初学一级) | 2014-07-14 16:26

@Eysa: 所有的缓存系统设计时都是容量限制和缓存失效机制的

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2014-07-14 17:19
0

EF有缓存?这个说法你是在哪里看到的呀?我没听说过呢。

EF最终还是转成SQL在执行,你需要多少数据就取多少数据,怎么也不能一次需要100G的数据吧,100条还差不多呢!

Alex_QY1987 | 园豆:1888 (小虾三级) | 2014-07-15 09:11

 你的意思是说EF没有缓存了?

支持(0) 反对(0) Eysa | 园豆:62 (初学一级) | 2014-07-15 10:31

@Eysa: 是的。至少现在的版本里面,没有看到说EF有缓存这样的说法。以后的版本或许会有吧。

支持(0) 反对(0) Alex_QY1987 | 园豆:1888 (小虾三级) | 2014-07-15 10:33
0

ef有跟踪机制 

非这种状态的EntityState.Detached

同一个context的数据都会保存在内存中

然后context 是线程安全的

换句话说 如果context是在一个线程创建的 那么就只有这个可以用 其他线程用的话就会报错

这个问题会出现在 如果 你申明一个静态的context

第一次访问 可以用 第二次访问就会报错  因为每次请求是一个新的线程

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2014-07-15 16:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册