回答
NHibernate支持類成員的多種訪問策略。公共屬性是事實上的默認值,但你可以告訴NHibernate直接訪問你的類的字段。
例如
<property name="CustomerName" access="field.camelcase-underscore" />
將指示NHibernate的在你的聲明如下類使用領域:
protected string _customerName;
查看Scott Gu的書呆子晚餐教程。 LINQ和MVC允許您創建一個將數據庫對象封裝在公共和私有屬性中的業務層。
http://weblogs.asp.net/scottgu/archive/2009/03/10/free-asp-net-mvc-ebook-tutorial.aspx
LINQ不完全是一個ORM - 但我會去檢查鏈接,以防萬一它有有用的技術。 – 2009-05-05 21:29:33
他特指LINQ to SQL,而不是一般的LINQ。 – Lucas 2009-05-29 18:48:06
你的意思是你想給私人或受保護的成員映射到數據庫中,而不是讓他們都公開?我使用過的一個ORM可以做到這一點,就是Gentle.NET。這是穩定的,但並沒有真正獲得許多更新這些天。
這正是我需要的 - 就像我提到的那樣,我對封裝有非常強烈的信念,但有時候應該存儲私有字段。 – 2009-05-05 21:33:01
實體框架支持這一點。您可以爲每個屬性定義訪問修飾符,並獨立地爲getter和setter定義訪問修飾符。
Mindscape LightSpeed僅綁定到字段 - 只爲您希望顯示的字段添加屬性(這是僅限於的方式,因爲封裝的明確原因)。當然,工具將默認提供屬性,但它可以全部關閉。
的LINQ to SQL可以綁定到私人領域,但它確實不但是完全支持私人蔘數的構造函數。
Harper - 我感覺Linq-To-SQL的方式幾乎一樣,直到我意識到這一切都是關於如何考慮ORM的......它有助於將Linq2SQL視爲「強類型的ADO .NET提供者「...
如果你只是想在幾個字段上」快速查看「,那麼LINQ預測會返回匿名類型給你,它只包含你感興趣的字段。 實體類的大小與您查詢的網絡和內存性能無關。
另一方面,DataContexts(或其他ORM中的UnitOfWork)通常是您儘可能快地使用和處置的東西。因此,它們所產生的實體的作用應該僅限於「數據持有者」。換句話說,如果你想要構建複雜或長期生活的對象,可以從LINQ實體(即不同的類)單獨設計它們,並使用L2S來填充/創建這些對象。
- 1. 構造函數中的調用基構造函數和其他構造函數
- 2. 構造函數和析構函數
- 3. 構造函數和析構函數 - C++
- 4. 析構函數和構造函數
- 5. 構造函數和無參數構造函數?
- 6. 構造函數內的構造函數
- 7. 德爾福構造函數和類構造函數
- 8. c#構造函數注入和構造函數重載
- 9. 移動構造函數和非常拷貝構造函數
- 10. Variadic模板構造函數和複製構造函數
- 11. 繼承構造函數和默認構造函數
- 12. 字符串類的構造函數和複製構造函數
- 13. 公共構造函數和靜態構造函數
- 14. JavaScript構造函數和Scala構造函數有何不同?
- 15. 構造函數和構造函數重載
- 16. 構造函數和默認構造函數的區別
- 17. Android:AsyncTask和構造函數
- 18. JAXB和構造函數
- 19. React - 構造函數()和componentDidMount
- 20. enable_if和構造函數
- 21. Python構造函數和__init__
- 22. 構造函數和原型
- 23. Java類和構造函數
- 24. malloc和C++構造函數
- 25. 構造函數和繼承
- 26. SWIG和C++構造函數
- 27. 構造函數和繼承?
- 28. 構造函數和繼承
- 29. 函數對象和構造
- 30. 構造函數和異常
我打算回答完全相同的事情。 :) NHibernate也不需要你有一個公共的默認構造函數。如果你不想有一個公共的默認構造函數,你可以簡單地將它設爲私有。 (你必須定義一個,這樣NHibernate可以創建你的類的一個實例,但它完全可以是私有的)。 – 2009-05-05 21:35:42