- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Net频繁访问数据库的优化探究
.Net频繁访问数据库的优化探究(一)知识点:DataTable、Linq、lamda表达式、Cache场景:查询部门的所有员工和管理员,并分配相应的权限实现过程一般为:查询部门,遍历部门(查询员工、分配权限、查询管理员、分配权限)访问数据库比较频繁的环节为遍历部门里面的查询员工和管理员,所有我们尝试在这里进行优化将用户全部读取出来存入DataTable对象中,下一次可直接从DataTable中查询数据而不必再读取数据库,但即便存入DataTable对象,DataTable对象也会在页面刷新或回发时丢失,所以将DataTable对象存入.Net Cache中。(这与存入Session有质的差别)。代码:if (Page.Cache[users] == null)Page.Cache.Insert(users, UsersCom.GetSimpleUser(), null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(20));DataTabledt = (DataTable)Page.Cache[users];其中Page.Cache.Insert最后两个参数指示缓存到期时间;UsersCom.GetSimpleUser()是从数据库中查询数据的方法,返回的是DataTable对象。尽量不要返回所有的字段,而是需要的字段。这里返回的字段包括user_id、unit_id。从Cache中查询数据,也就是查询DataTable对象,查询的方法很多,从最简单的开始。代码:dt.Select(unit_id= + unitID);直接使用DataTable的Select方法查询数据,返回DataRow数组,如果你并不想要得到DataRow数组,此时你不得不遍历该数组重新组装成其它对象。这个效率也许没有使用Linq的效率高,既然这样那就直接使用Lamda表达式吧!代码:dt.AsEnumerable().Where(t = t.Fielddecimal(unit_id) == unitID).Select(t = t.Fielddecimal(user_id)).ToList();返回Listdecimal对象;注:你需要usingSystem.Linq;和在解决方案中引用System.Data.DataSetExtensions(不需要在代码中using)。当然如果你要使用Linq,代码如下:(from t indt.AsEnumerable()wheret.Fielddecimal(unit_id) == unitIDselectt.Fielddecimal(user_id)).ToList();返回Listdecimal对象;适当的时候使用多线程该场景实例运行时间较长,所以开启了新线程。也避免了UI线程的等待。你可以封装一个线程执行类,最后将这个类对象存入Session,随时可以检测运行状态。代码:///summary/// Asp.net线程执行类////summarypublicclassDocWork {///summary///构造函数////summary///param name=method执行方法/parampublicDocWork(Action method) {this.method = method; }privateDateTimestartTime;///summary///开始时间////summarypublicDateTimeStartTime {get { returnstartTime; } }privateDateTimeendTime;///summary///结束时间////summarypublicDateTimeEndTime {get { returnendTime; } }privateDateTimeerrorTime;///summary///发生错误时间////summarypublicDateTimeErrorTime {get { returnerrorTime; } }privateThreadcurrnetThread;///summary///当前线程////summarypublicThreadCurrnetThread {get { returncurrnetThread; } }privatestringerrorInfo;///summary///错误信息////summarypublicstringErrorInfo
文档评论(0)