NHibernate を使用した BLOB ストリームの永続化
-
20-08-2019 - |
質問
次のように宣言されたクラスがあるとします。
public class MyPersistentClass
{
public int ID { get; set; }
public Stream MyData {get;set; }
}
NHibernate のマッピングを使用して、データベースとの間で MyData プロパティを永続化するにはどうすればよいですか?
解決
カスタム タイプを使用してストリームを使用し、ストレージのニーズに応じてマップすることができます。しかし、私の記事で述べたように、Stream オブジェクトの使用にはいくつかの問題があります。 NHibernate を使用した BLOB および CLOB の遅延ストリーミングに関するブログ シリーズ.
本当に必要なのは、データを読み取るストリームを作成できる Blob オブジェクトです。Stream には、読み取り元の位置に関する情報が含まれており、閉じられて破棄されることが予想されるため、ドメイン モデルで直接使用すると、いくつかの問題が発生する可能性があります。
見てみることをお勧めします ブログシリーズ のソースコードと同様に、 NHibernate.Lob プロジェクト. 。まさにそのような問題に対処するためのさまざまなマッピング オプションが含まれています。これまでのところ文書化されたものはほとんどありませんが、今後さらに文書化される予定です。
所属していません StackOverflow