【发布时间】:2010-06-12 02:12:21
【问题描述】:
我无法保存与 nhibernate 的多对多关系。我搜索并查看了 SO 和 google 中几乎所有相同的问题,但没有任何效果。 单个类已正确更新,但连接表中没有插入任何内容。
我有 2 个类:事件和类别。
映射是这样的(我更新了两个映射并添加了一些代码):
事件:
<bag name="Categories" access="field.camelcase-underscore" table="EventCategories" cascade="all-delete-orphan" lazy="true">
<key column="Event"/>
<many-to-many class="Category" column="Category"/>
</bag>
类别:
<bag name="Events" table="EventCategories" access="field.camelcase-underscore" inverse="true" cascade="all-delete-orphan" lazy="true" >
<key column="Category"/>
<many-to-many class="Event" column="Event"/>
</bag>
生成Event+Categories的代码是
public void AddEvent(EventInputModel model)
{
var rawCategories = model.Categories.Split(',');
IEnumerable<Category> categories = _repository.GetCategories(rawCategories);
foreach (var category in rawCategories)
{
var c = categories.Where(p => p.Name.ToLower().Equals(category));
if (c.Any())
{
model.Event.AddCategory(c.First<Category>());
}
else
{
model.Event.AddCategory(new Category() { Name = category });
}
}
_repository.Save(model.Event);
}
public void Save(Event p)
{
using (var t = Session.BeginTransaction())
{
Session.SaveOrUpdate(p);
t.Commit();
}
}
我尝试交换两个映射中的每个参数,但没有任何效果...
你知道我做错了什么或者对这个案例有正确的映射吗?
非常感谢!
【问题讨论】:
-
你能贴出使用这些类的代码吗?