2009-01-31 34 views
8

應堅持的Blob流。如果我有一個類被聲明爲:與NHibernate

public class MyPersistentClass 
{ 
    public int ID { get; set; } 
    public Stream MyData {get;set; } 
} 

我如何使用NHibernate的映射到MyData的財產堅持並從數據庫中?

回答

13

您可以使用自定義類型的Stream並根據您的存儲需求進行映射。但是,我在我的blog series about lazy streaming of BLOBs and CLOBs with NHibernate中提到了使用Stream對象的一些問題。

你真正需要的是一個Blob對象,它可以創建一個Stream來讀取數據。由於Stream包含有關您正在閱讀的位置的信息,並且預計將被關閉並處理,因此可能會在直接在域模型中使用時產生一些問題。

我建議你看看the blog series以及NHibernate.Lob project的源代碼。它包含了針對這個問題的各種映射選項。目前有一點少有記載,但更多的是即將到來的。

+4

僅供參考NHibernate.Lob項目有點不完整,並且很久沒有收到更新。試圖在最近的一個項目中使用它,我發現了一些問題(例如垃圾收集未實現,不能用於二級緩存等) - 所以我決定將它分叉並修復它們 - 您可以找到我的叉子在這裏:https://github.com/bittercoder/Lob – Bittercoder 2011-03-07 04:11:09