我有一个表有很多行的是产品表,当用户搜索的网站,我做一个选择从这个表,我也使用在选择包括方法,我用探查和我注意到,EF生成有很多的内部连接的查询,左连接等等。
我想要做的就是用这个选择查询,并在同一个数据库结果插入临时缓存表,然后我可以创建一个服务来更新这个表中的每个x分钟。
问题是,如何使EF使用此缓存表中选择行,所以我可以只是做一个选择*而不是每次查询产品表中的联接?
谢谢!
我有一个表有很多行的是产品表,当用户搜索的网站,我做一个选择从这个表,我也使用在选择包括方法,我用探查和我注意到,EF生成有很多的内部连接的查询,左连接等等。
我想要做的就是用这个选择查询,并在同一个数据库结果插入临时缓存表,然后我可以创建一个服务来更新这个表中的每个x分钟。
问题是,如何使EF使用此缓存表中选择行,所以我可以只是做一个选择*而不是每次查询产品表中的联接?
谢谢!
我敢肯定EF没有临时表支持 - 至少开箱即用 - 但它是不断变化的。
最好的办法是做这样的事情...
dbcontext.Database.ExecuteSqlCommand("...")
......我猜有,你可以运行任意SQL(我知道大多数的东西可以被传递,但我不知道的局限性,但你可以运行一个SP,创建索引等) - 设置一个临时表。
那么下一步会做相反的一侧是这样的..
dbcontext.MyTable.SqlQuery("...").ToList()
...映射回SQL结果到你的一些实体 - 或者一个非映射实体串什么的。 ( dbcontext.MyTable.SqlQuery<T>("...").ToList()
现在的问题是如何做到这一点正是 - 不知道你的具体情况真的。 但是,您可以创建前手一个临时表,并把它映射 - 并使用它的温度的目的。
基本上,这是一个DBA思维-但EF不适合这样的事情(看到类似的东西在这里的实体框架4.更新性能实体框架临时表或表变量的推荐使用量 ),但与自定义跑起来像查询你可能是好的以上。
希望能帮助到你
编辑:这也可能有助于从EF论坛,但它更涉及。