У меня есть 3 таблицы в моей базе данных:
Как вы можете видеть, таблица 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; }
}