8

如果我有一个类声明为:

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

如何使用 NHibernate 的映射将 MyData 属性持久化到数据库和从数据库中取出?

4

1 回答 1

13

您可以使用自定义类型的 Stream 并根据您的存储需求对其进行映射。但是,正如我在关于使用 NHibernate 对 BLOB 和 CLOB 进行延迟流式传输的博客系列中提到的那样,使用 Stream 对象存在一些问题。

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

我建议您查看博客系列以及NHibernate.Lob 项目的源代码。它包括针对此类问题的各种映射选项。到目前为止,几乎没有记录,但还有更多。

于 2009-03-12T01:58:39.310 回答