Ich habe Windows SmartClient Lösung von nHibernate 2.2 auf 4.0 aktualisiert und bekomme eine Ausnahme beim Schreiben in die Datenbank.Kann Objekt vom Typ 'System.Collections.ArrayList' nicht in Typ 'System.Collections.Generic.IEnumerable' eingeben
ist die Ausnahme in diesem Code ausgelöst:
this.session.Save(this.Location); // NHibernate.ISession
tx.Commit(); // exception thrown here
Die Ausnahme ist:
'System.InvalidCastException' in NHibernate.dll System.InvalidCastException: Kann Objekt vom Typ werfen 'System.Collections.ArrayList' , um 'System.Collections.Generic.IEnumerable' 1 [System.Object] 'einzugeben.
Es gibt mehrere Listen im Objekt gespeichert wird, ist hier ein paar repräsentative:
protected System.Collections.IList locationList;
public virtual System.Collections.IList AssociatedLocationList
{
get
{
if (this.locationList == null)
{
this.locationList = new System.Collections.ArrayList();
}
return this.locationList;
}
set { this.locationList = value; }
}
protected System.Collections.Generic.IList<Inspection> inspectionList;
public virtual System.Collections.Generic.IList<Inspection> InspectionList
{
get
{
if (this.inspectionList == null)
{
this.inspectionList = new System.Collections.Generic.List<Inspection>();
}
return this.inspectionList;
}
set { this.inspectionList = value; }
}
Beachten Sie, dass einige haben eine Art angegeben und manche nicht.
Ein Vorschlag here ist die Eigenschaft zu einem IList
festgelegt, aber ich habe es bereits so.
Was kann getan werden?
Haben Sie darüber nachgedacht, Generika zu verwenden? Das Umwerfen nackter Objekte scheint sehr ... 2003. –
Ich fügte eine andere repräsentative Eigenschaft hinzu, die eine zum ursprünglichen Beitrag hat. Schlägst du vor, dass dies das Problem verursachen könnte? –
Die Besetzung würde in einer generischen Version nicht mehr existieren. –