當我開始用asp.net編寫web應用程序時,我開始使用Linq-To-SQL映射器來訪問MSSQL Server的小型項目。
獲得一定的成績後,我轉入了經典的3層,包括圖形層,業務層,數據層。數據層的唯一功能是提供插入/更新/刪除方法,沒有任何邏輯和邏輯選擇方法的形式。如何將我的業務層對象映射到數據庫中?是否是O/R映射器的時間?
過了一段時間,我意識到最好不要將數據庫類提供給GUI(不幸的是花了一些時間)。我開始在BL中使用Business類,這些類用於BL執行的所有操作,並由GUI以獲取BL中的List的形式顯示。
一個很大的優點是我可以提供其他屬性,這些屬性不是由數據庫本身表示的。然而,我在BL裏面用映射相應的BL類到數據庫類的方法進行了映射。
我想這就是O/R映射器派上用場了嗎?直到現在我還沒有意識到他們的目的,但我想我只是找到了它。我最近嘗試過使用.net framework 4的新實體框架,但我只是像Linq-To-SQL DataContext一樣使用它。
有沒有辦法自動實現映射?如果是的話,是新的實體框架提供了什麼,或者我需要尋找像NHibernate一樣的O/R映射器?
AR是好的,如果你確定你永遠不想以任何其他方式做ORM。剝離AR實現,尤其是裝飾器,退出你的領域是一件非常痛苦的事情。我通常更喜歡Repository模式;另一方面的ORM可以是任何你想要的,從一個自己存儲的proc系統到Linq2SQL到NHibernate到EF,如果你已經很好地構建了你的IRepository接口,你的代碼將永遠不會知道它們的區別。 – KeithS 2010-09-03 00:32:31