我有两个对象:
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!
答案 0 :(得分:1)
您需要在作者映射中添加级联,以便在保存/更新作者时保存新的瞬态标记:
HasManyToMany(x => x.Tags)
.Cascade.All();