Je rencontre des problèmes avec mes mappings courants. J'ai une entité avec une collection enfant d'entités i.e Event et EventItems par exemple.nhibernate mapping: Une collection avec cascade = "all-delete-orphelin" n'était plus référencée
Si je mets ma carte en cascade de la collection à AllDeleteOrphan je reçois l'erreur suivante lors de l'enregistrement d'une nouvelle entité à la DB: NHibernate.HibernateException: Une collection avec cascade = « all-delete-orphan » n'était plus référencé par l'instance d'entité propriétaire: Core.Event.EventItems
Si je règle la cascade sur Tout cela fonctionne-t-il correctement? Ci-dessous sont mes classes et les fichiers de cartographie:
public class EventMap : ClassMap<Event>
{
public EventMap()
{
Id(x => x.Id, "Id")
.UnsavedValue("00000000-0000-0000-0000-000000000000")
.GeneratedBy.GuidComb();
Map(x => x.Name);
HasMany(x => x.EventItems)
.Inverse()
.KeyColumn("EventId")
.AsBag()
.Cascade.AllDeleteOrphan();
}
}
public class EventItemMap : SubclassMap<EventItem>
{
public EventItemMap()
{
Id(x => x.Id, "Id")
.UnsavedValue("00000000-0000-0000-0000-000000000000")
.GeneratedBy.GuidComb();
References(x => x.Event, "EventId");
}
}
public class Event : EntityBase
{
private IList<EventItem> _EventItems;
protected Event()
{
InitMembers();
}
public Event(string name)
: this()
{
Name = name;
}
private void InitMembers()
{
_EventItems = new List<EventItem>();
}
public virtual EventItem CreateEventItem(string name)
{
EventItem eventItem = new EventItem(this, name);
_EventItems.Add(eventItem);
return eventItem;
}
public virtual string Name { get; private set; }
public virtual IList<EventItem> EventItems
{
get
{
return _EventItems.ToList<EventItem>().AsReadOnly();
}
protected set
{
_EventItems = value;
}
}
}
public class EventItem : EntityBase
{
protected EventItem()
{
}
public EventItem(Event @event, string name):base(name)
{
Event = @event;
}
public virtual Event Event { get; private set; }
}
Assez perplexe ici. Tous les conseils grandement appréciés.
Chev
Pourquoi utilisez-vous subclassmap? Est-ce une faute de frappe? – Paco