Я пытаюсь создать объект, которому в настоящее время принадлежит Список того же объекта, эта ссылка существует в другой таблице.
Затем она отображается как API. Я могу получить данные, но каждый раз, когда я пытаюсь обновить коллекцию, это приводит к ошибке: a collection with cascade= all-delete-orphan was no longer referenced by the owning entity instance
public class MyEntity
{
public virtual int Id { get; set; }
public virtual ISet<MyEntity> LinkedEntities { get; set; }
}
Я использую автоматическое автоматическое преобразование nhibernate и, таким образом, переопределяю отображение по умолчанию.
var fluentConfigurationCampaign = Fluently.Configure()
.CurrentSessionContext("mySession")
.Database(
MySQLConfiguration.Standard.ConnectionString(MyConnectionString)
)
.Mappings(m => m.AutoMappings.Add(AutoMap.AssemblyOf<MyEntity>(cfg)
.Conventions.Setup(c => c.Add<CustomForeignKeyConvention>())
.Override<MyEntity>(map => map.HasManyToMany(i => i.LinkedEntities)
.ParentKeyColumn("EntitySelf")
.ChildKeyColumn("EntityOther")
.Table("Linked").Cascade.AllDeleteOrphan())
Связанная таблица, как предполагает сопоставление, содержит только 3 свойства.
Сгенерированный самостоятельно идентификатор
ForeignKey EntitySelf, ссылающийся на таблицу Entity
ForeignKey EntityOther, связывающий таблицу Entity.
При обновлении сущности (через контроллер), я получаю EntityContract, который через autopper сопоставляется с сущностью.
Затем я делаю:
_session.Merge(myEntityFromController);
var oldEntity = _session.Get<T>(myEntityFromController.Id);
_session.Update(oldEntity);
_session.Flush();
, который отлично работает для всех других моих сущностей. Но, пытаясь изменить список LinkedEntities (либо удалив некоторые, либо добавив, либо даже не касаясь его), я получил ошибку: a collection with cascade= all-delete-orphan was no longer referenced by the owning entity instance
Любая помощь будет оценена, так как я застрял наЭта проблема ! Спасибо.