Domanda

Posso in qualche modo dire NHibernate per mappare la mia relazione uno-a-molti a una proprietà che è di tipo List al posto del IList dell'interfaccia?

So che NHibernate utilizza il proprio IList-implementazione per caricamento pigro, ma non ho bisogno di questa funzionalità. Invece ho bisogno di una classe che è serializzabile, che non riesco a realizzare utilizzando l'interfaccia IList invece del calcestruzzo List di classe.

È stato utile?

Soluzione

La semplice risposta è no, non si può dire NHibernate utilizzare List<T>. Questo domanda precedente discute in modo più dettagliato.

Il miglior articolo ho potuto trovare su serializzazione di oggetti NHibernate si rivolge agli utenti WCF.

Altri suggerimenti

Se avete veramente bisogno di fare questo l'unica opzione reale è di cambiare la vostra strategia di serializzazione.

È possibile utilizzare l'attributo DataContract in System.Runtime.Serialization piuttosto che l'attributo di serializzazione standard. Ciò sosterrà la serializzazione delle interfacce.

Se è necessario utilizzare la serializzazione standard di allora si potrebbe utilizzare una proprietà separata per memorizzare i valori che si desidera essere serializzato e semplicemente popolarlo sulla serializzazione:

//NHibernate property
public virtual IList<Entity> Entities
{
    get;
    set;
}

//Serialized property
public List<Entity> SerializedEntities
{
    get;
    set;
}

[OnSerializing]
void DoStuff(StreamingContext context)
{
    SerializedEntities = // Whatever you want to serialize...
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top