nhibernate多对多包未插入关联表
我知道这个问题已经被问过很多次了,但是我有两门课,是多对多的。我用袋子给他们画了地图。以下是NHibernate映射: 日历:nhibernate多对多包未插入关联表,nhibernate,many-to-many,Nhibernate,Many To Many,我知道这个问题已经被问过很多次了,但是我有两门课,是多对多的。我用袋子给他们画了地图。以下是NHibernate映射: 日历: <?xml version="1.0" encoding="utf-8"?> <!--Generated by NHibernate.Mapping.Attributes on 2009-10-09 18:09:29Z.--> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by NHibernate.Mapping.Attributes on 2009-10-09 18:09:29Z.-->
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Calendar.Calendar, Calendar" table="Calendars">
<id name="CalendarId" column="CalendarId" type="Int32">
<generator class="native" />
</id>
<property name="Name" length="100" />
<property name="CalendarStatus" />
<property name="CalendarType" type="Calendar.GenericEnumMapper`1[[Calendar.CalendarType, Calendar, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], Calendar" length="50" />
<property name="RecordCreatedBy" column="CreatedBy" length="50" />
<property name="RecordModifiedBy" column="ModifiedBy" length="50" />
<property name="CreateDate" />
<property name="ModifiedDate" />
<bag name="Events" table="CalendarEventsInCalendar" cascade="all">
<key column="CalendarId" />
<many-to-many class="Calendar.CalendarEvent, Calendar" column="CalendarEventId" />
</bag>
</class>
</hibernate-mapping>
public virtual void AddEvent(CalendarEvent calEvent)
{
if(!calEvent.Calendars.Contains(this))
calEvent.Calendars.Add(this);
Events.Add(calEvent);
}
然后我做一个SaveOrUpdate(日历)
有什么想法吗?您必须在事务中包装SaveOrUpdate,然后执行transaction.Commit()。否则,映射不会保存,只保存实体 谢谢,
Jason我认为CalendarEvent的问题在于
inverse=true
。你应该删除它这只是事实的一半。基本上,您所需要的只是一个Session.Flush(),但由于Transaction.Commit()隐式地完成了这项工作,所以最好使用Transaction.Commit()。
public virtual void AddEvent(CalendarEvent calEvent)
{
if(!calEvent.Calendars.Contains(this))
calEvent.Calendars.Add(this);
Events.Add(calEvent);
}