In meinem Projekt verwende ich NHibernate/FluentNHibernate und arbeite mit zwei Entitäten, Verträgen und Dienstleistungen.
Dies ist mein Vertragstyp:
[Serializable]
public partial class TTLCContract
{
public virtual long? Id { get; set; }
// andere Eigenschaften hier
public virtual Iesi.Collections.Generic.ISet Services { get; set; }
// Implementierung von Equals
// und GetHashCode hier
}
und das ist mein Servicetyp:
[Serializable]
public partial class TTLCService
{
public virtual long? Id { get; set; }
// andere Eigenschaften hier
public virtual Activity.Models.TTLCContract Contract { get; set; }
// Implementierung von Equals
// und GetHashCode hier
}
Also wie Sie sehen können, möchte ich, dass mein Vertragsobjekt viele Dienstleistungen hat und dass jede Dienstleistung eine Referenz auf den übergeordneten Vertrag hat.
Ich verwende FluentNhibernate. Also sehen meine Mapping-Dateien wie folgt aus:
public TTLCContractMapping()
{
Table("tab_tlc_contracts");
Id(x => x.Id, "tlc_contract_id");
HasMany(x => x.Services)
.Inverse()
.Cascade.All()
.KeyColumn("tlc_contract_id")
.AsSet();
}
und
public TTLCServiceMapping()
{
Table("tab_tlc_services");
Id(x => x.Id, "tlc_service_id");
References(x => x.Contract)
.Not.Nullable()
.Column("tlc_contract_id");
}
und hier habe ich mein Problem: Wenn ich die Liste aller Verträge in der Datenbank abrufe, funktioniert es. Wenn ich jedoch die Liste aller Dienstleistungen in einem bestimmten Vertrag abrufe, erhalte ich eine StackOverflowException...
Sehen Sie irgendwelche Fehler in dem, was ich geschrieben habe? Habe ich einen Fehler gemacht?
Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.
Ach ja, ich habe vergessen zu sagen... wenn ich mir den Stacktrace anschaue, sehe ich, dass das System alle Dienstleistungen lädt und dann wieder die Verträge lädt, die mit diesen Dienstleistungen zusammenhängen.
Ich habe nicht mehr genügend Erfahrung oder Ideen, um zu verstehen, was los ist... daher wäre jede Hilfe wirklich sehr sehr großartig!
Vielen Dank im Voraus, Cheers, Gianluca.