Persistindo Streams Blob com NHibernate
-
20-08-2019 - |
Pergunta
Se eu tiver uma classe declarada como:
public class MyPersistentClass
{
public int ID { get; set; }
public Stream MyData {get;set; }
}
Como posso usar mapeamentos do NHibernate persistir a propriedade MyData de e para o banco de dados?
Solução
Você pode usar um fluxo usando um tipo personalizado e mapeá-la de acordo com suas necessidades de armazenamento. Mas existem alguns problemas com o uso do objeto Stream como eu menciono em meu série de blog sobre streaming de preguiçoso de BLOBs e CLOBs com NHibernate .
O que você realmente precisa é de um objeto Blob que por sua vez pode criar um fluxo para ler dados a partir. Desde fluxo contém informações sobre a posição que você está lendo a partir e espera ser fechado e descartado ele pode criar alguns problemas quando usado diretamente em um modelo de domínio.
Eu sugiro que você dê uma olhada em as séries de blog , bem como o código-fonte do NHibernate.Lob projeto . Ele inclui várias opções de mapeamento para tal problema a. Um pouco mal documentado até agora, mas mais está por vir.