2011-06-13 78 views
0

我对NHibernate有一点点映射问题。首先我的数据库结构看起来像这样。NHibernate-Mapping问题

表后(ID,标题,文本......)与Articels 表标记(标记名)与标签(Tagcloud) 表PostTag(帖子ID,标签名)映射邮政和标签。

所以每个帖子都可以有更多的标签。现在我想将Post中的Tags作为基本集合映射到字符串中,而不是作为Tag的对象。那么有谁知道如何做到这一点?我是新来的,直到现在我无法找到答案:)

如此忠实。 扬

回答

0

当你不需要更新标签:

HasMany(x => x.Tags) 
    .Table("PostTag") 
    .KeyColumn("PostId") 
    .Element("Tagname"); 

,如果您需要更新然后:

HasManyToMany(x => x.Tagnames) 
    .Table("PostTag") 
    .AsBag() // or AsArray() 
    .ParentKeyColumn("PostId") 
    .ChildKeyColumn("TagName") 
    .Element("TagName"); 

或者

class Post 
{ 
    public virtual ISet<Tag> Tags { get; set; } 

    public virtual string[] Tagnames 
    { get { return Tags.Select(t => t.Name).ToArray(); } } 
}