4
다 대일 복합 키를 가진 객체를 삭제하려고하면 NHibernate가 던지고 예외가 발생합니다. 개체를 저장하면 제대로 작동합니다. 여기NHibernate KeyNotFoundException on delete
[KeyNotFoundException: The given key was not present in the dictionary.]
System.ThrowHelper.ThrowKeyNotFoundException() +28
System.Collections.Generic.Dictionary`2.get_Item(TKey key) +7455516
NHibernate.Engine.StatefulPersistenceContext.RemoveEntity(EntityKey key) in d:\CSharp\NH\nhibernate\src\NHibernate\Engine\StatefulPersistenceContext.cs:434
NHibernate.Action.EntityDeleteAction.Execute() in d:\CSharp\NH\nhibernate\src\NHibernate\Action\EntityDeleteAction.cs:87
NHibernate.Engine.ActionQueue.Execute(IExecutable executable) in d:\CSharp\NH\nhibernate\src\NHibernate\Engine\ActionQueue.cs:136
NHibernate.Engine.ActionQueue.ExecuteActions(IList list) in d:\CSharp\NH\nhibernate\src\NHibernate\Engine\ActionQueue.cs:126
NHibernate.Engine.ActionQueue.ExecuteActions() in d:\CSharp\NH\nhibernate\src\NHibernate\Engine\ActionQueue.cs:174
NHibernate.Event.Default.AbstractFlushingEventListener.PerformExecutions(IEventSource session) in d:\CSharp\NH\nhibernate\src\NHibernate\Event\Default\AbstractFlushingEventListener.cs:241
NHibernate.Event.Default.DefaultFlushEventListener.OnFlush(FlushEvent event) in d:\CSharp\NH\nhibernate\src\NHibernate\Event\Default\DefaultFlushEventListener.cs:19
NHibernate.Impl.SessionImpl.Flush() in d:\CSharp\NH\nhibernate\src\NHibernate\Impl\SessionImpl.cs:1479
내 도메인 모습입니다 : 다음은 예외입니다 나는 원인이 있었는지 알아 냈
public class OrderClassMap : ClassMap<Order> {
public OrderClassMap() {
this.Table("Orders");
this.Id(x => x.OrderId).Generated.Identity();
this.Map(x => x.PersistenceId);
this.HasMany(x => x.Lines).Inverse().KeyColumn("OrderId").Cascade.AllDeleteOrphan();
}
}
public class OrderLineClassMap : ClassMap<OrderLine> {
public OrderLineClassMap() {
this.Table("OrderLines");
this.CompositeId()
.KeyReference(x => x.Order, "OrderId")
.KeyProperty(x => x.LineId);
this.Map(x => x.PersistenceId);
}
}