首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Entity Framework 4缓存表

使用Entity Framework 4缓存表
EN

Stack Overflow用户
提问于 2012-04-05 06:45:48
回答 1查看 705关注 0票数 0

我有一个有很多行的表,这是products表,当用户搜索网站时,我从这个表中进行选择,我还在select中使用Include方法,我使用profiler,我注意到EF生成了一个带有许多内连接、左连接等的查询。

我想要做的是使用这个select查询并将结果插入到同一数据库的一个临时缓存表中,然后我可以创建一个服务来每x分钟更新一次这个表。

问题是,如何让EF使用这个缓存表来选择行,这样我就可以只执行一次select *操作,而不是每次使用连接查询products表时都执行select *操作?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2012-04-05 07:14:11

我非常确定EF没有临时表支持--至少是开箱即用的--但它在不断变化。

你最好的选择就是做这样的事情。

代码语言:javascript
复制
dbcontext.Database.ExecuteSqlCommand("...")

我猜你可以运行一个任意的...and (我知道大多数东西都可以传入,但是我不确定有什么限制,但是你可以运行一个SP,创建索引等等)-来建立一个临时表。

那么下一步就是做相反的事情,就像这样。

代码语言:javascript
复制
dbcontext.MyTable.SqlQuery("...").ToList()

...to将sql结果映射回您的某个实体-或者对于未映射的实体映射回字符串或其他内容。(dbcontext.MyTable.SqlQuery<T>("...").ToList())

问题是如何准确地做到这一点--真的不确定你的具体细节。但是您可以事先创建一个临时表,并将其映射-并将其用于临时目的。

基本上,这只是一种数据库管理员的想法--但是EF对于这样的事情并不完美(参见这里的Recommed usage of temp table or table variable in Entity Framework 4. Update Performance Entity framework),但是您可能可以使用像上面这样的自定义ran查询。

希望能有所帮助

编辑:这也可能对from EF forums有帮助,但它更复杂。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10020330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档