是用Entity.Save(),还是用DAL.Save(Entity e)
?????? 自從上一次寫關于ORM的文章已經是幾個月前的事情了,在這里先貼一下文章的地址,如果大家感興趣的話可以去看看。
1、支持差異數據保存的數據庫實體類設計——處女作
2、支持差異數據保存的數據庫實體類設計(二)(續)
3、支持差異數據保存的數據庫實體類設計(三)(續)
4、SAS框架問世(本片博客即將登場)
由于一直忙于框架的優化,所以就很少寫文章了,本文也是在不斷的優化自己的ORM過程中誕生的,好了廢話不多說了,下面步入正題。
?
???????一直在使用公司內部使用的一個框架,框架的的數據層可以說是兩個類,一個Entity類,一個EntityFactory類,這兩個類分別是干嗎就不多講了。在不斷編碼的過程中總是發現在重復的寫EntityFactory.Save(e)、EntityFactory.Delete(e)這樣的代碼,心里就在想可否做一下處理,直接調用Entity.Save(),或者Entity.Delete()這樣寫起來方便,看起來也很順眼。
?????? 直到最近在優化自己的框架代碼的時候,才發現Entity.Save()是不太合適的,特別是當你的應用程序需要連接到多個不同的數據庫的時候,而且你也不知道當前這個Entity對應于哪個數據庫,或者說同一個Entity對應于多個數據庫的時候,使用Entity.Save()操作估計就很難辦了。
?????? 假設:MSSqlDAL是Sql Server數據庫的數據層,在保存實體對象的時候,你可以通過下面方法完成(Entity e)
?????? 兩種方法視乎都可以達到效果,但是現在如果我們的系統需要在另外一個數據庫存一個副本,即同一個對象會存到兩個不同的數據庫(可能是SqlServer,也可能是Oracle),這個時候,我們需要增加一個Oracle數據庫的數據層OracleDAL.所以如果這個時候來調用e.Save()方法就出現問題了。
?
最后總結一下,最終定下來采用Dal.Save(e)保存對象是正確的,因為強制性給實體對象增加一個Save()方法,似乎有點說不通,因為對象本身并沒有保存這個動作。而是由數據層來負責保存數據庫實體對象,這也符合OO原則。
?
ASP.NET開發技術交流群: 67511751
?
posted on 2011-12-27 15:40 Juvy 閱讀(...) 評論(...) 編輯 收藏轉載于:https://www.cnblogs.com/Juvy/archive/2011/12/27/2303638.html
總結
以上是生活随笔為你收集整理的是用Entity.Save(),还是用DAL.Save(Entity e)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PP卡机场贵宾厅名单 官网是最好的查找工
- 下一篇: 中银信用卡家装分期申请条件有哪些?被拒绝