Flussi di blob persistenti con NHibernate
-
20-08-2019 - |
Domanda
Se ho una classe dichiarata come:
public class MyPersistentClass
{
public int ID { get; set; }
public Stream MyData {get;set; }
}
Come posso usare i mapping di NHibernate per rendere persistente la proprietà MyData da e verso il database?
Soluzione
È possibile utilizzare uno Stream utilizzando un tipo personalizzato e mapparlo in base alle proprie esigenze di archiviazione. Ma ci sono alcuni problemi con l'utilizzo dell'oggetto Stream, come menziono nel mio serie di blog sullo streaming pigro di BLOB e CLOB con NHibernate .
Ciò di cui hai veramente bisogno è un oggetto BLOB che a sua volta può creare uno Stream da cui leggere i dati. Poiché Stream contiene informazioni sulla posizione da cui stai leggendo e prevede di essere chiuso e eliminato, può creare alcuni problemi se utilizzato direttamente in un modello di dominio.
Suggerirei di dare un'occhiata a la serie di blog nonché il codice sorgente di progetto NHibernate.Lob . Include varie opzioni di mappatura proprio per questo problema. Finora un po 'poco documentato ma ne sta arrivando di più.