2

我在寫一個類庫作爲DataModel。 DataModel能夠處理所有與數據庫相關的任務。我使用NHibernate和Fluent NHibernate相同。使用NHibernate創建數據庫類庫

現在的問題如下:

  1. 我們應該揭露實體(POCO類)。
  2. 將具有內部受保護屬性和屬性的實體暴露爲接口是否好?
  3. 爲映射創建的實體可以是WPF MVVM的模型。
  4. 還是應該直接綁定實體?
  5. 如果庫返回實體列表作爲API返回值,則無法控制。所以任何人都可以在列表中添加或刪除。我應該如何控制它。我是否應該創建來自IList的代理,該代理將跟蹤它。
  6. 在API中拋出異常是正確的,還是應該返回null?
  7. 在圖書館保持登錄狀態好嗎?

回答

1

我們應該公開實體(POCO類)。

是的,創建包裝類使得更多的努力。

將內部保護屬性和屬性暴露爲接口的實體是否好?

是的,安裝員和非暴露屬性是控制。

爲映射創建的實體可以是WPF MVVM的模型。

對於原始類型可以,但引用可以通過接口暴露。

還是應該直接綁定實體?

如果Model是直接使用POCO對象創建的。更新案例更加靈活。如果有取消操作,用戶不能更改POCO對象的屬性。

如果庫返回實體列表作爲API返回,則無法控制。所以任何人都可以在列表中添加或刪除。我應該如何控制它。我是否應該創建來自IList的代理,該代理將跟蹤它。

IEnumerable用於通過接口公開集合。

在API中拋出Exception是否正確或者我應該返回null?

例外情況會讓用戶知道錯誤要好得多。但將用戶可讀的異常封裝到NHibernate異常中。

是它的圖書館保持良好記錄

記錄是很好的功能瞭解的問題。

+0

謝謝jugal ..... – Deepak 2013-06-06 05:56:31

1

我們應該公開實體(POCO類)。

肯定的,否則什麼用的實體的時候沒有人使用

是好有一個實體的內部保護財產和財產暴露的接口。

這要看!內部受保護的屬性在使用ORM時不成問題,但我優先考慮將內部的東西減少到最低限度,因爲我喜歡維護它們自己狀態的對象。接口很好

爲映射創建的實體可以是WPF MVVM的模型。

當然。不需要再次複製它們。這就是持久性的無知是爲什麼

或者我們應該直接綁定實體?

更多ofthen不是,用戶界面的要求比持久性/ businessrules非常不同的,所以會有專門用於UseCases /瀏覽次數的ViewModels。然而簡單的Dataholders像Order class扔進列表可以直接(例如使用DatabindingFactory,使他們實現INPC)

沒有控制,如果庫返回實體的名單作爲API返回的約束。所以任何人都可以在列表中添加或刪除。我應該如何控制它。我是否應該創建來自IList的代理,該代理將跟蹤它。

列表只是在內存容器中。用戶仍然需要通過API來保存/更新狀態。

是不是拋出異常的API中出現的或者我應該返回null

如果返回集合然後空集合遠比空好。

但是,例外情況應該鼓起來,最好包裹在自己可手動的例外中。實施NHibernate.Exceptions.ISQLExceptionConverter(例如像NHibernate.Test.ExceptionsTest.MSSQLExceptionConverterExample)並且使用例如 config.DataBaseIntegration(db => db.ExceptionConverter<MyExceptionConverter>())

是它的圖書館

是絕對的好保持記錄。記錄功能可以調試已部署的應用(流利)如果可能的話,NHibernate已經有很多內置的日誌記錄了。

+0

感謝Firo,需要協助異常處理????我應該直接拋出異常還是返回空集合。 – Deepak 2013-05-06 05:23:08