使用NHibernate持久保存Blob Streams

时间:2009-01-31 11:59:29

标签: nhibernate stream binary-data blobs

如果我有一个声明为:

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

如何使用NHibernate的映射将MyData属性与数据库保持一致?

1 个答案:

答案 0 :(得分:13)

您可以使用自定义类型的Stream并根据您的存储需求进行映射。但是正如我在blog series about lazy streaming of BLOBs and CLOBs with NHibernate中提到的那样使用Stream对象存在一些问题。

你真正需要的是一个Blob对象,它反过来可以创建一个Stream来读取数据。由于Stream包含有关您正在阅读的位置的信息,并且希望关闭并处理它,因此在直接在域模型中使用时会产生一些问题。

我建议您查看the blog series以及NHibernate.Lob project的源代码。它包括针对此类问题的各种映射选项。到目前为止,有一点记录不多,但还有更多。