流利的NHibernate IList<> HasManyToMany不起作用

时间:2014-01-13 09:18:46

标签: c# asp.net-mvc-4 nhibernate fluent-nhibernate

我有两个对象:

public class Authors
{
    public virtual int Id { get; set; }
    public virtual string FirstName { get; set; }
    public virtual string LastName { get; set; }
    public virtual IList<Tags> Tags { get; set; }
}

public class Tags
{
    public virtual int Id { get; set; }
    public virtual string TagMark { get; set; }
    public virtual IList<Authors> Authors { get; set; }
}

和他们的映射

public class AuthorsMap : ClassMap<Authors>
{
    public AuthorsMap()
    {
        Id(x => x.Id);

        Map(x => x.FirstName)
            .Length(100)
            .Not.Nullable();

        Map(x => x.LastName)
            .Length(100)
            .Not.Nullable();

        HasManyToMany(x => x.Tags);

    }
}

public class TagsMap : ClassMap<Tags>
{
    public TagsMap()
    {
        Id(x => x.Id);

        Map(x => x.TagMark)
            .Length(100)
            .Not.Nullable();

        HasManyToMany(x => x.Authors)
            .Cascade.All().Inverse(); 
    }
}

但是当我想向现有作者添加新标签时,我什么都得不到。甚至不会抛出错误,当然标签也不会添加到与作者的关系表中。

例如:

using (var trans.....) {
author.Tags.Add(tagobject)
trans.Commit()
}

虽然早期获得了tagobject和author。我也尝试添加像session.SaveOrUpdate(作者),但不起作用...... HEELP!

1 个答案:

答案 0 :(得分:1)

您需要在作者映射中添加级联,以便在保存/更新作者时保存新的瞬态标记:

HasManyToMany(x => x.Tags)
.Cascade.All();