中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

ORM With Versioning Control

  在一些場合,我們可能需要對業(yè)務(wù)實(shí)體進(jìn)行版本控制。類似于源碼管理工具一樣,可以查看歷史版本,可以回滾,可以Lock,一個(gè)業(yè)務(wù)實(shí)體對象,同一時(shí)刻只允許一個(gè)人進(jìn)行更新操作。為了實(shí)現(xiàn)信息的可追溯性,這些功能應(yīng)該是必不可少的。只是我們該在哪里去控制實(shí)體對象的版本呢?

  我們希望將版本控制的功能,獨(dú)立于某一個(gè)具體的業(yè)務(wù)實(shí)體,這樣才可以實(shí)現(xiàn)最大共用和擴(kuò)展性。顯然,要實(shí)現(xiàn)這一功能最好的切入點(diǎn)應(yīng)該是在數(shù)據(jù)持久層,也就是在實(shí)體持久化時(shí),我們需要有一個(gè)統(tǒng)一的,通用化的接口來完成,同時(shí)在這里插入版本控制的功能。無疑,這里的最合適的持久化接口應(yīng)該是ORM,那就相當(dāng)于我們要實(shí)現(xiàn)一個(gè)帶實(shí)現(xiàn)版本控制的ORM接口。

  版本控制功能,我們不僅要求與數(shù)據(jù)庫無關(guān),還要求與具體的某一種ORM框架無關(guān)。與數(shù)據(jù)庫無關(guān),我們可以很容易通過ORM來隔立,但是與ORM框架無關(guān),我們就需要將版本控制的功能從與某一種ORM框架隔離開來。

  版本控制功能,是插入到ORM接口中去的,那在哪里去檢測實(shí)體的修改情況呢?一種方案是將原始數(shù)據(jù)和修改后的數(shù)據(jù),傳入版本控制接口,由版本控制模塊進(jìn)行比較,從而得出實(shí)體的變化情況。

  另一種方案,就是在實(shí)體中插入一定的屬性變化跟蹤機(jī)制,這也是現(xiàn)有的ORM實(shí)體中已經(jīng)有實(shí)現(xiàn)的一部分,不同的ORM框架在監(jiān)控實(shí)體更新變化方面都有不同的機(jī)制,在NBear,LINQ To SQL,Entity Framework都有一套自己的實(shí)體屬性變化跟蹤機(jī)制。我們可以將這些不同的跟蹤機(jī)制統(tǒng)一起來,形成一套標(biāo)準(zhǔn)的ORM版本控制模塊的接口實(shí)現(xiàn)。

  還有一些需要考慮的:

  存儲(chǔ)歷史版本時(shí),是使用增量存儲(chǔ)還是使用完全存儲(chǔ)。增量存儲(chǔ),在回滾歷史版本時(shí),就需要從當(dāng)前版本起,做很多的回溯的工作,而完全存儲(chǔ)就可能會(huì)耗很多存儲(chǔ)空間。

  在存儲(chǔ)方式上,我們是將它們存儲(chǔ)到數(shù)據(jù)庫,還是以XML文件的格式單獨(dú)存放每一個(gè)版本的記錄。

  目前的一個(gè)存儲(chǔ)想法是:使用增量存儲(chǔ)與完全存儲(chǔ)共存,將每次改變的字段,以及它的原始值和新值保存到數(shù)據(jù)庫中,方便在查看歷史版本修改記錄時(shí)用。而將每個(gè)版本完整值,以一定的目錄格式,XML文件的格式保存在磁盤中,可以考慮壓縮等因素。這樣做的原因是,回滾歷史版本的操作一般是相對比較少的,但是存儲(chǔ)完整的歷史版本值,卻可能需要很多的數(shù)據(jù)庫空間和考慮備份的問題。假設(shè)我們以操作日期的目錄格式來保存文件,我們就可以方便的進(jìn)行備份和轉(zhuǎn)移。

  遺留問題,在ORM中,對象的關(guān)聯(lián)是必不可少的內(nèi)容。對于對象之間的關(guān)聯(lián)關(guān)系發(fā)生變化是否也需進(jìn)行版本控制,這樣一來,版本控制的內(nèi)容就會(huì)變得更復(fù)雜和難以實(shí)現(xiàn)。所以暫且限定,版本控制只針對于單對象的屬性值變化。

  以上就是ORM With versioning control的一些想法,這些想法是從Content Repository API For Java (JCR)衍生而來的。在JCR中是實(shí)現(xiàn)了一個(gè)自有格式(XML)的數(shù)據(jù)庫,用在CMS中存儲(chǔ)一些結(jié)構(gòu)可變(非結(jié)構(gòu)化)的內(nèi)容。同時(shí)在它的功能定義中,還包括了一些傳統(tǒng)數(shù)據(jù)庫(或數(shù)據(jù)庫使用接口)所不具有的功能,包括:版本控制,數(shù)據(jù)變化檢測等功能。我想法,在結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)中,要實(shí)現(xiàn)這些功能,應(yīng)該是在ORM上來實(shí)現(xiàn),歡迎大家來討論。

NET技術(shù)ORM With Versioning Control,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 成人激情视频网 | 精品久久影院 | 婷婷久久网 | 大乳boobs巨大吃奶挤奶 | 成人在线播放网址 | 精品国产一区二区在线 | 久久亚洲欧美日韩精品专区 | 91麻豆精品国产91久久久更新资源速度超快 | 9porny九色视频自拍 | 国产高清久久久 | 色噜噜色综合 | 日韩高清一区二区 | 91精品国产综合久久久动漫日韩 | 妖精视频一区二区三区 | 亚洲欧美日韩电影 | 男女羞羞视频免费 | 国产乱码精品一区二区三区中文 | 国产美女精品视频 | 日批的视频 | 日韩欧美在线观看一区 | 亚洲三区在线观看 | 亚洲国产精品一区 | 久久国| www四虎影视 | 国产a视频 | 亚洲网站在线观看 | 国产一区二区三区在线 | 九九视频在线观看 | 日韩一级二级片 | 久久精品国内 | 国产精品一区二区福利视频 | www.操.com| 亚洲天堂二区 | 盗摄精品av一区二区三区 | 做a的各种视频 | 91文字幕巨乱亚洲香蕉 | 国产三区av | 久久高清免费视频 | 国产精品久久久久一区二区三区 | 亚洲国产视频一区 | 亚洲精品无 |