В моей базе данных есть 3 таблицы:
- Проекты (id, name)
- Теги (id, name)
- ProjectsTagss (id, projectId, tagid)
Как вы можете видеть, таблица ProjectsTags является таблицей моста
вот мое свободное отображение nhibernate
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();
Как вы можете видеть, у меня никогда не было таблицы Tag, связанной ни с чем другим. Теперь мне нужно создать отчет, чтобы показать тег, и как часто этот тег используется, поэтому мне нужно присоединиться к тегу в ProjectTag. Я попытался добавить эту строку в таблицу тегов:
HasMany(x => x.ProjectsTags).AsBag().Inverse()
.Cascade.AllDeleteOrphan().Fetch.Select().BatchSize(80);
но когда я иду, чтобы обновить имя объекта тега и зафиксировать, я получаю эту ошибку:
Коллекция с каскадом = "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; }
}