Wie NHibernate sagen, eine Eins-zu-viele-Beziehung zur Karte zur Liste und nicht IList ?

StackOverflow https://stackoverflow.com/questions/1086333

  •  23-08-2019
  •  | 
  •  

Frage

Kann ich irgendwie NHibernate sage meine Eins-zu-viele-Beziehung zu einer Eigenschaft zuzuordnen, die vom Typ Liste ist anstelle der Schnittstelle IList?

Ich weiß, dass NHibernate seine eigene IList-Implementierung für verzögertes Laden verwendet, aber ich diese Funktion nicht benötigen. Stattdessen muss ich eine Klasse, die serialisierbar ist, was ich auch nicht mithilfe der IList-Schnittstelle anstelle der konkreten List-Klasse erreichen kann.

War es hilfreich?

Lösung

Die einfache Antwort ist nein, man kann nicht sagen, NHibernate List<T> zu verwenden. Diese frühere Frage es im Detail diskutiert.

Die besten Artikel ich konnte auf die Serialisierung NHibernate Objekte zu finden ist WCF Nutzer ausgerichtet.

Andere Tipps

Wenn Sie wirklich brauchen, dies Ihre einzige echte Option zu tun ist, um die Serialisierung Strategie zu ändern.

Sie können die Datacontract verwenden Attribut in System.Runtime.Serialization eher als die Standard-Serialisierung-Attribut. Dadurch wird die Serialisierung von Schnittstellen unterstützen.

Wenn Sie dann Standard-Serialisierung verwenden Sie eine separate Eigenschaft zum Speichern der Werte, die Sie wünschen serialisiert werden nutzen können und es einfach auf die Serialisierung füllen:

//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...
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top