大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> NET专区 -> 剖析 .Net 下的数据访问层技术(二)

剖析 .Net 下的数据访问层技术(二)

时间: 2021-07-31 作者:daque

其它 中断ado.net领会前,不得不提提datareader与dataset间的伯仲之争。 就作家所看过的材料,简直一切的都倡导本质情景简直领会,剩下很少很少的则全凭部分风气确定。 在进修ado.net时,作家也是抱着如许的办法,并重复铭记材料上归纳的那些条件(就像昔日进修gof 23条时那么,简直不妨滚瓜烂熟了j),想到终有一日也可在ado.net下大展神威了。 怅然实际不随人愿,贯串做了几个名目,不管范围巨细,果然十足沿用了dataset处置计划! 此时,再回顾看看进修ado.net时翻开最为一再的petshop名目,两相一比拟,这才看出些许眉目。 大略的说,petshop沿用了如次这种“弧线救亡”的办法来实行数据调换: datareader获得数据 => 创造数据实业类 => 按照字段典型弥补数据实业类 => 将数据实业增添到列表类中(仅对准归来胜过一条数据的场所) (弥补:沿用数据实业类大概汇合类不妨比拟简单的实行cache manament,而普遍的datareader因为其数据读取办法控制,没辙满意这种需要) 这个进程与dataadapter.fill() 所所爆发的功效并行不悖,只然而,在fill() 中dataadpater机动创造datareader去获得数据,之后创造datatable(十分于数据实业类),并按照字段典型弥补datatable,固然,即使大概归来多条记载,datatable实足不妨处置,就没需要去实行列表操纵了。 大概读者群赶快爆发了疑义:既是如许,petshop中何以还须要数据实业类呢? 这个中仍旧有少许差其余。 开始,数据实业类是轻量级的structure,普遍仅包括数据字段,没有什么操纵本领,这比datatable大概datarow仍旧有少许本能上的上风(在数据量不大时不妨忽视不计);另一上面,数据实业类的操纵对立大略,不须要开拓职员完备任何ado.net常识(本来就datatable来说,这也不算什么题目),点点属性就不妨了。 然而,按照作家的试验来看,这两上面犹如还不及以使人转而运用datareader计划,来由陈列如次:(1) 对于数据量较大的场所,不妨沿用分批读取的办法,这有点一致datagrid的数据分页功效;(2) 对于大略的数据,实业类还能草率,一旦波及关系数据,就只能其余撰写本领了。而一切那些,在dataset中利害常简单处置的(对于企业级运用,大局部情景都须要处置比拟搀杂的数据);(3) datatable“天才”就扶助数据汇合操纵,如许的个性比“汇合+实业”的搀和形式(petshop)更简单遏制,也更天然;(4) 实业类在证明时须要决定一切数据典型,当举行数据弥补时,就须要datareader再次关心实业所对应的数据典型,不许有涓滴缺点!在这上面,datatable就显得特殊简单,操纵时只须要一次典型关心即可;(5) dataset处置计划不妨特殊简单的扶助序列化操纵(如:remoting,webservices),同声,与xml的联系更是接近无比,这对于和其它体例的交互来说也是至关要害的。领会过少许本领和计划,断定读者群伙伴已有少许领会。值此收官之际,即使非要在这边供给一个“综上所述”,那作家的倡导就特殊精确:在企业级运用开拓中,尽大概的沿用dataset(datatable / dataview)+ cache management处置计划!其它开拓中,只在如次4种情景才商量运用datareader(就作家体味来说,大局部运用datareader都属第2种情景):(1) 对资源诉求比拟刻薄的场所,这边的资源重要指外存和数据库贯穿;(2) 蓄意在读取数据库归来截止集时作自设置处置,比方:在读取一条记载后连忙中断处置,大概在读取时作计划操纵。(提醒:这种情景一致于xml中的sax(simple api for xml)本领,无需一次性读入一切xml数据即可举行操纵;差异的,dom(document object model)则诉求必需承载一切xml数据后本领发端操纵(msxml4.0已发端承诺只读取xml文书档案局部数据即可发端操纵,这是后话)!)(3) 只蓄意获得归来记载数大概归来记载的局部字段,如:string getnamebyid(int nid) //按照职工id归来职工全名,这边只须要// 读取全名字段;(提醒:这种情景普遍不妨经过实行一定的查问或保存进程径直处置)(4) 出于某些上面的商量(比方:n-tier体例中庄重辨别各layer间的工作),没辙(大概遏止)经过数据库自己举行查问过滤,这时候就惟有运用datareader在读取时举行过滤操纵!(提醒:固然dataview也能到达这种手段,但它的过滤基础是必需读取到一切归来数据,以是本能上不如datareader!)

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.