日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

是用Entity.Save(),还是用DAL.Save(Entity e)

發(fā)布時間:2023/12/13 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 是用Entity.Save(),还是用DAL.Save(Entity e) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
是用Entity.Save(),還是用DAL.Save(Entity e)

?????? 自從上一次寫關(guān)于ORM的文章已經(jīng)是幾個月前的事情了,在這里先貼一下文章的地址,如果大家感興趣的話可以去看看。

1、支持差異數(shù)據(jù)保存的數(shù)據(jù)庫實(shí)體類設(shè)計(jì)——處女作

2、支持差異數(shù)據(jù)保存的數(shù)據(jù)庫實(shí)體類設(shè)計(jì)(二)(續(xù))

3、支持差異數(shù)據(jù)保存的數(shù)據(jù)庫實(shí)體類設(shè)計(jì)(三)(續(xù))

4、SAS框架問世(本片博客即將登場)

由于一直忙于框架的優(yōu)化,所以就很少寫文章了,本文也是在不斷的優(yōu)化自己的ORM過程中誕生的,好了廢話不多說了,下面步入正題。

?

???????一直在使用公司內(nèi)部使用的一個框架,框架的的數(shù)據(jù)層可以說是兩個類,一個Entity類,一個EntityFactory類,這兩個類分別是干嗎就不多講了。在不斷編碼的過程中總是發(fā)現(xiàn)在重復(fù)的寫EntityFactory.Save(e)、EntityFactory.Delete(e)這樣的代碼,心里就在想可否做一下處理,直接調(diào)用Entity.Save(),或者Entity.Delete()這樣寫起來方便,看起來也很順眼。

?????? 直到最近在優(yōu)化自己的框架代碼的時候,才發(fā)現(xiàn)Entity.Save()是不太合適的,特別是當(dāng)你的應(yīng)用程序需要連接到多個不同的數(shù)據(jù)庫的時候,而且你也不知道當(dāng)前這個Entity對應(yīng)于哪個數(shù)據(jù)庫,或者說同一個Entity對應(yīng)于多個數(shù)據(jù)庫的時候,使用Entity.Save()操作估計(jì)就很難辦了。

?????? 假設(shè):MSSqlDAL是Sql Server數(shù)據(jù)庫的數(shù)據(jù)層,在保存實(shí)體對象的時候,你可以通過下面方法完成(Entity e)

  • MSSqlDAL.Save(e);
  • 或者你在Entity中增加一個方法public void Save(){ MSSqlDAL.Save(this);},然后調(diào)用e.Save()。
  • ?????? 兩種方法視乎都可以達(dá)到效果,但是現(xiàn)在如果我們的系統(tǒng)需要在另外一個數(shù)據(jù)庫存一個副本,即同一個對象會存到兩個不同的數(shù)據(jù)庫(可能是SqlServer,也可能是Oracle),這個時候,我們需要增加一個Oracle數(shù)據(jù)庫的數(shù)據(jù)層OracleDAL.所以如果這個時候來調(diào)用e.Save()方法就出現(xiàn)問題了。

    ?

    最后總結(jié)一下,最終定下來采用Dal.Save(e)保存對象是正確的,因?yàn)閺?qiáng)制性給實(shí)體對象增加一個Save()方法,似乎有點(diǎn)說不通,因?yàn)閷ο蟊旧聿]有保存這個動作。而是由數(shù)據(jù)層來負(fù)責(zé)保存數(shù)據(jù)庫實(shí)體對象,這也符合OO原則。

    ?

    ASP.NET開發(fā)技術(shù)交流群: 67511751

    ?

    posted on 2011-12-27 15:40 Juvy 閱讀(...) 評論(...) 編輯 收藏

    轉(zhuǎn)載于:https://www.cnblogs.com/Juvy/archive/2011/12/27/2303638.html

    總結(jié)

    以上是生活随笔為你收集整理的是用Entity.Save(),还是用DAL.Save(Entity e)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。