У меня есть объекты Post
и Tag
, где между ними существует взаимосвязь «многие-ко-многим» (например, каждое сообщение может иметь один или несколько тегов, и каждый тег может быть связан с любым количество должностей).NHibernate Many-to-many with Count
То, что я хотел бы достичь, состоит в том, чтобы объект Tag
имел поле, предоставляющее количество сообщений, связанных с этим тегом. Тем не менее, я не знаю, как это сделать, не получив всю коллекцию Post
s (чего я бы хотел избежать).
Я использую Fluent NHibernate и мои объекты и отображение выглядеть в настоящее время:
Entities/Post.cs
public class Post : PersistentBase
{
public virtual string Title { get; set; }
/* snip */
private IList<Tag> tags = new List<Tag>();
public virtual IEnumerable<Tag> Tags {
get { return tags; }
}
public virtual void AddTag(Tag tag) {
this.tags.Add(tag);
}
}
отображения/PostMap.cs
public class PostMap : ClassMap<Post>
{
public PostMap()
{
Id(x => x.Id).GeneratedBy.HiLo("99");
Map(x => x.Title);
/* snip */
HasManyToMany(x => x.Tags);
}
}
Сущности/Tag.cs
public class Tag : PersistentBase
{
public virtual string Name { get; set; }
public static Tag Create(string name) {
return new Tag { Name = name };
}
}
Отображения/TagMap.cs
public class TagMap : ClassMap<Tag>
{
public TagMap()
{
Id(x => x.Id).GeneratedBy.HiLo("99");
Map(x => x.Name).Unique();
}
}
В идеале я хотел бы добиться того, чтобы иметь возможность добавлять в Entities/Tag.cs, что-то вроде следующего:
public virtual int PostCount { get; set; }
И после этого у вас будет заполнено количество сообщений, использующих этот тег.
Как я могу это сделать? (действительно ли это возможно?)
у не нужен класс tagmap –