历遍List并从数据库中得到更新,求思路。

问题描述

有classGamepublicintGameId{get;set;}publicstringGameName{get;set;}和数据库Game表List<Game>games通过httpwebrequest获得更新,每秒更新一次,但这个httpwebrequest只有gameId,并没有gamename,想要更新这个class,现在的做法是每次request完都需要去历遍games执行一次sql语句(select*fromgameswheregameid=@gameid),非常慢,需要改善,目前的思路是这样,先建一个List<game>GamesInDatabase读取全部数据库数据,然后games得到后和GamesInDatabase做历遍。那么问题来了1,这个思路正确吗,是否有更加快速的方案2,数据库Game表会通过另外一个程序更新的,那么Game表更新的时候GamesInDatabase也同样需要更新,如何做到?EntityFramework是否有这样的功能,数据库里有更新的时候本地也同样更新。

解决方案

解决方案二:
你要想清楚你这么做的意义和目的是什么?构造一个静态数据集合,然后每次进行webrequest后还能够会写到数据库,并将数据集合同步更改?(如果这样那难度在哪里?)EF不会帮你解决“数据同步”的问题,这个部分需要你自己去实现。
解决方案三:
1、.思路当然正确,就是缓存机制么2、EF没有这个功能3、net类库有System.Runtime.Caching可用,不过这种标准的缓存机制,并不能严格做到GameName一定准确,它采用的一般是过时更新等手段,有可能取得旧数据。所以是不是适用就要看你的应用对这个数据严谨度的要求4、如果要实现最佳的缓存,那只能全部自己写代码了,但你的更新程序是另外一个程序(我理解为是另外一个exe,不知道你表达是否准确),这就很难做了。
解决方案四:
list<game>games中存放的gameid是相同的?
解决方案五:
为了找到一条记录,就“读取全部数据库数据”,这不叫做真正的缓存技术。先把概念搞清楚。你的所谓的List中数据的命中率低到令人发指的程度,就产生内存数据的不断“抖动”。这是很“坑”的思路。所谓缓存,是说你把“select*fromgameswheregameid='abcd'”这样一个语句(或者这个语句的md5)作为key,然后创建一个Cache单元。这样你把这个语句发数据库系统一次之后,重复使用1000次而不需要再把它发给数据库系统。在缓存中只有个别的记录,而不是什么“全部数据库数据”!至于说数据库系统中的表发生了改变,这个缓存单元应该自动清理掉,以避免在内存中有脏数据。但是如果数据库系统中的表没有改变,就不要想当然地去定时清理什么缓存单元。
解决方案六:
所谓缓存,是说相同的sql查询语句作为key,将查询出来的几条(或者几十条)记录缓存起来。缓存单元的大小的选择,是个关键。把数据库表、甚至数据库叫做缓存,那就太坑爹的。
解决方案七:
数据库里有更新的时候本地也同样更新。要做到上面这点。建议思路:对该表添加触发器,监控它的增删改动作,一旦发生,就通过oracleAQ发送消息到IBMMQ,然后你从MQ就可以实时获取到数据的变动。但是我自己也不知道“”“”通过oracleAQ发送消息到IBMMQ“”“”这一步怎么做,你问问其他人吧。
解决方案八:
只有ID的话,可以先查询出ID对应的gamename然后把id和name同时更新到表中啊,是这样?
解决方案九:
缓存数据,每次的http请求,对缓存进行修改。然后将这一条保存到数据库。

时间: 2024-09-30 22:19:15

历遍List并从数据库中得到更新,求思路。的相关文章

SQLserver删除某数据库中所有表实现思路_MsSql

方便删除数据库中所有的数据表,清空数据库,有些有约束,不能直接delete,需要先删除库中的约束,代码如下 复制代码 代码如下: --删除所有约束 DECLARE c1 cursor for select'alter table ['+ object_name(parent_obj)+'] drop constraint ['+name+']; ' from sysobjects where xtype ='F' open c1 declare @c1 varchar(8000) fetch n

SQLserver删除某数据库中所有表实现思路

方便删除数据库中所有的数据表,清空数据库,有些有约束,不能直接delete,需要先删除库中的约束,代码如下 复制代码 代码如下: --删除所有约束 DECLARE c1 cursor for select'alter table ['+ object_name(parent_obj)+'] drop constraint ['+name+']; ' from sysobjects where xtype ='F' open c1 declare @c1 varchar(8000) fetch n

在Oracle数据库中同时更新两张表的简单方法_oracle

以前只会写一些简单的updaet语句,比如updae table set c1='XXX' 之类的 今天遇到一个数据订正的问题,项目背景如下,有个表A,有两个字段a1,a2还有一个关联表B,其中也有两个字段,b1和b2.其中a2和b2是关联的,想把A中的字段a1更新成B中的b1 理论上sql应该挺好写的,但是在oralce中实现了半天一直报语法错误.而且确实还有些小小细节没有注意到. 首先上测试数据 表1,ZZ_TEST1 表2,ZZ_TEST2 要把表一的text更新成表二的text1值,对应

SharePoint 2013 数据库中手动更新用户信息

在SharePoint的使用过程中,尤其是Windows认证的情况下,而且没有配置用户配置文件服务,经常会出现如果更新AD中的用户信息(包括名字.显示名.邮件等),SharePoint这边站点并不会更新的情况. 这时候,我们经常会操作数据进行更新操作,生产环境建议备份,测试环境也要多看几次update语句. 1.首先进入授权的用户组,看到我们的用户名,当AD中更新,这里的Name还是之前的名字,如下: 2.鼠标放到名字上,可以看到Url链接地址,这时候我们需要ListId和ID,ListId是用

Sql Server数据库中的更新表名、列名、列值

更新表名: exec sp_rename '旧表名','新表名' 更新列名: exec sp_rename '表名.[字段原名]','字段新名','column'                   exec sp_rename '表名.[旧列名]','新列名','column' 更新某一行中的一列     我们为 lastname 是 "Wilson" 的人添加 firstname:    UPDATE Person SET FirstName = 'Fred' WHERE Last

dataset更新到数据库-C#中在Dataset中删除几行后无法更新到数据库中

问题描述 C#中在Dataset中删除几行后无法更新到数据库中 foreach (DataRow row in set.Tables["test"].Rows) { if (row[0].ToString() == textBox3.Text) { row.Delete(); } } set.AcceptChanges(); foreach (DataRow row in set.Tables["test"].Rows) { MessageBox.Show(row[

java读取excel2013版的内容并把读取出来的内容插入到数据库中

问题描述 java读取excel2013版的内容并把读取出来的内容插入到数据库中 想用java代码读取excel(2013)表格里的内容,但是excel里面有好几个sheet,还有好几个表,该怎么办,而且还要把读取出来的内容储存到数据库中去,求大神帮助 解决方案 public static List<String[]> readExcel(String filePath) { try { List<String[]> list = new ArrayList<String[]

Wpf,将本地excel表中的某一页中某一列根据唯一标识(id)导入到数据库中对应的列中

问题描述 框架为mvvm,使用aspose.cells操作excel需求如下.数据库输出表T1中的L,M对应本地excel,T2中的M,O列.N,O,P列对应本地excel,T3中的A,H,G列导入条件是各表中的id对应.使用DataAdapter批量更新求思路,或者类似的小例子,发到我邮箱,m18039670659@163.com十分感谢-

java二进制存储图片到数据库中

问题描述 java二进制存储图片到数据库中 使用Java实现图片的存储-------存储到数据库中并读取 求代码 解决方案 java存储图片到数据库java存储图片到数据库将图片以二进制存储到数据库中 解决方案二: http://blog.sina.com.cn/s/blog_9ce5a1b50101aoed.html 解决方案三: 不同的数据库中有对大数据的支持,例如mysql是blob类型. 参考:http://blog.csdn.net/zyw745293/article/details/