Ich habe also eine Entität namens Event, die viele Berichte enthält (eins zu viele), die viele Quellen (viele zu viele) enthält.NHibernate - Versucht, eine Entität zu aktualisieren, die nicht aktualisiert werden muss
Ich habe ein Problem, das ich gerade nicht herausfinden kann, wenn ich versuche, mein Ereignis zu aktualisieren, wird es versuchen, den Bericht wegen der Kaskade zu aktualisieren (was in Ordnung ist) und es wird versuchen, zu aktualisieren die Quellen des Berichts in der Join-Tabelle wegen der Kaskade (was in Ordnung ist), aber aus irgendeinem Grund versucht sie auch, die Source-Entität zu aktualisieren, die sie nicht aktualisieren sollte, da es keine Änderung darin gibt.
public class Event
{
public virtual IList<Report> Reports { get; set; }
public virutal int Id { get; set; }
public Event()
{
Reports = new List<Report>();
}
}
public class EventMapping : ClassMap<Event>
{
public EventMapping()
{
Table("EVENTS");
Id(x => x.Id).Column("ID").GeneratedBy.Sequence("EVENT_ID_SEQ");
HasMany(x => x.Reports).KeyCoulmn("EVENT_ID").Cascade.SaveUpdate();
}
}
public class Report
{
public virtual int Id { get; set; }
public virtual int Status { get; set; }
public virtual IList<Source> Sources { get; set; }
public Report()
{
Sources = new List<Source>();
}
}
public class ReportMapping : ClassMap<Report>
{
public ReportMapping()
{
Table("REPORTS");
Id(x => x.Id).Column("ID").GeneratedBy.Sequence("DIVUACH_ID_SEQ");
Map(x => x.Status).Column("Status");
HasManyToMany(x => x.Sources).Table("SOURCES_IN_REPORT").ParentKeyColumn("REPORT_ID").ChildKeyColumn("KOD_SOURCE").Cascade.All();
}
}
public class Source
{
public virtual int Id { get; set; }
}
public class SourceMapping : ClassMap<Source>
{
public SourceMapping()
{
Table("SOURCE");
Id(x => x.Id).Column("ID");
}
}
hier ist was ich mache und wenn es scheitert.
var eventFromDb = _session.Get<Event>(eventId);
eventFromDb.Reports.ToList().ForEach(x => x.Status = GetStatus());
_session.Update(eventFromDb);
Irgendeine Idee warum?
Haben Sie mehr Felder in 'Source'? –