簡體   English   中英

如何改進映射到數據庫的業務層對象? 是時候使用 O/R 映射器了嗎?

[英]How can I improve my business layer objects mapping into a database? Is it time for a O/R mapper?

當我開始使用 ASP.NET 編寫 Web 應用程序時,我從使用 Linq-To-SQL 映射器來訪問 MSSQL 服務器的數據庫的小項目開始。
在積累了一些經驗后,我轉而采用經典的三層方法,即圖形層、業務層和數據層。 數據層的唯一功能是提供沒有任何邏輯的插入/更新/刪除方法和邏輯選擇方法的形式。

隨着時間的推移,我意識到最好不要向 GUI 提供數據庫類(不幸的是,花了一些時間)。 我轉而使用 BL 中的業務類,這些業務類用於 BL 執行的所有操作,並以從業務層獲取 List 的形式由 GUI 顯示。
一個很大的優勢是我可以提供數據庫本身沒有表示的其他屬性。 但是,我自己在業務層內部使用將相應業務層類映射到數據庫類的方法進行了映射。

我想這就是 O/R 映射器派上用場的地方? 直到現在,我還沒有意識到他們的目的,但我想我剛剛找到了。 我最近嘗試在 .NET Framework 4 中使用新的實體框架,但我只是像使用 Linq-To-SQL DataContext 一樣使用它。

有沒有辦法自動實現映射? 如果是,那是新實體框架提供的,還是我需要尋找像 NHibernate 這樣的 O/R 映射器?

我只在我的項目中使用 NHibernate。 我喜歡它給我的控制力和靈活性。 有一個名為Active Record的“快捷方式”,它在幕后使用 NHibernate,但為 NHibernate 提供了一個非常好的簡單界面。

NHibernate 有一個陡峭的學習曲線,但是當你通過它時 - 它真的是一帆風順。 當(並且如果)您冒險使用 NHibernate 的方式時,請查看Ayende以獲得很酷的提示。

(實體框架一個 O/R 映射器。)

如果您真的很想接觸 ORM(但在該領域相對較新),我強烈推薦類似 TekPub 的關於這些主題的視頻的內容。 您將能夠從頭開始使用這些工具。 它優雅地介紹了一些簡單但真實的問題,例如您提到的問題。

我在使用 Entity Framework 4.0(+ CTP)時玩得很開心。 我認為你會更輕松地處理這樣的 ORM。 EF4 提供了與 C#/.NET 中的 MSSQL 進行互操作所需的一切 您不必編寫一行 SQL,並且它完全支持 LINQ(通過 ObjectQuery)。

LinqToSql 是一個 ORM,所以您已經在使用它了。 取出 LinqToSql 並用 EntityFramework 或 NHibernate 替換它並不能解決您現在似乎遇到的問題。

以下是一些您應該了解的更多信息,以幫助您提供更多背景信息:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM