Ошибка nhibernate «cascade =« all-delete-orphan »

У меня есть 3 таблицы в моей базе данных:

  1. Projects (id, name)
  2. Теги (id, name)
  3. ProjectsTagss (id, projectId, tagid)

Как вы можете видеть, таблица ProjectsTags - это таблица-мост

вот мое быстрое отображение нибернации

ProjectMap.cs:

 Map(x => x.Name).Not.Nullable();
 HasMany(x => x.ProjectsTags).AsBag().Inverse()
    .Cascade.AllDeleteOrphan().Fetch.Select().BatchSize(80);

ProjectsTagsMap.cs:

 References(x => x.Project).Not.Nullable();
 References(x => x.Tag).Not.Nullable();

TagMap.cs:

  Map(x => x.Name).Not.Nullable();

Как вы можете видеть, я исторически не связывал таблицу тегов ни с чем другим. Теперь мне нужно создать отчет, чтобы показать тег и как часто этот тег используется, поэтому мне нужно перейти от тега к ProjectsTag. Я попытался добавить эту строку в карту тегов:

 HasMany(x => x.ProjectsTags).AsBag().Inverse()
    .Cascade.AllDeleteOrphan().Fetch.Select().BatchSize(80);

, но когда я перехожу к обновлению имени в объекте тега и фиксирую, я получаю эту ошибку:

Коллекция с cascade = "all-delete-orphan" на него больше не ссылался экземпляр объекта-владельца

, может ли кто-нибудь увидеть что-нибудь неправильное в том, что я добавил, что могло бы вызвать это исключение nhibernate, когда я просто обновляю таблицу тегов. Снова моя цель - иметь возможность делать что-то вроде:

 Tag.ProjectTags.Count();

Вот дополнительный код по запросу:

мой класс тега:

 public class Tag
{
    public virtual IList<ProjectTag> ProjectTags { get; set; }
    public virtual string Name { get; set; }
    public virtual string Description { get; set; }
}
11
задан leora 4 May 2011 в 12:33
поделиться