C# Can';t将项目添加到iesi.collections.generic.iset
正在尝试将项添加到iset,但未发生C# Can';t将项目添加到iesi.collections.generic.iset,c#,nhibernate,many-to-many,iesi-collections,C#,Nhibernate,Many To Many,Iesi Collections,正在尝试将项添加到iset,但未发生 var controlPoint = new ControlPoint {Lon = 53.25253, Lat = 56.23422, Radius = 16}; //controlPoint.ApprovedRoutes = new HashedSet<ApprovedRoute>(); controlPoint.Save(); var route = new ApprovedRoute(); route.ControlPoints = n
var controlPoint = new ControlPoint {Lon = 53.25253, Lat = 56.23422, Radius = 16};
//controlPoint.ApprovedRoutes = new HashedSet<ApprovedRoute>();
controlPoint.Save();
var route = new ApprovedRoute();
route.ControlPoints = new HashedSet<ControlPoint>();
route.ControlPoints.Add(controlPoint);
route.Name = "sometext";
route.Save();
//controlPoint.ApprovedRoutes.Add(route);
//controlPoint.Save();
var控制点=新控制点{Lon=53.25253,Lat=56.23422,Radius=16};
//controlPoint.ApprovedRoutes=新HashedSet();
controlPoint.Save();
var路线=新批准的路线();
route.ControlPoints=new HashedSet();
route.ControlPoints.Add(controlPoint);
route.Name=“sometext”;
route.Save();
//控制点。批准的路线。添加(路线);
//controlPoint.Save();
课程:
public class GeoPoint: Entity<long>
{
public virtual double Lon { get; set; }
public virtual double Lat { get; set; }
}
public class ControlPoint: GeoPoint
{
public virtual double Radius { get; set; }
public virtual Iesi.Collections.Generic.ISet<ApprovedRoute> ApprovedRoutes { get; set; }
}
public class ApprovedRoute : Entity<long>
{
public virtual string Name { get; set; }
public virtual Iesi.Collections.Generic.ISet<ControlPoint> ControlPoints { get; set; }
}
公共类地质点:实体
{
公共虚拟双Lon{get;set;}
公共虚拟双Lat{get;set;}
}
公共类控制点:地质点
{
公共虚拟双半径{get;set;}
公共虚拟Iesi.Collections.Generic.ISet ApprovedRoutes{get;set;}
}
公共类ApprovedRoute:实体
{
公共虚拟字符串名称{get;set;}
公共虚拟Iesi.Collections.Generic.ISet控制点{get;set;}
}
以下是地图:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Transport" namespace="Transport.Models">
<class name="GeoPoint" table="GeoPoint">
<id name="Id">
<column name="id" not-null="true" />
<generator class="identity" />
</id>
<property name="Lon" />
<property name="Lat" />
<joined-subclass name="ControlPoint" table="ControlPoint">
<key column="Id"/>
<property name="Radius"/>
<set name="ApprovedRoutes" table="M_ApprovedRoute_ControlPoint" inverse="true">
<key column="PointId"></key>
<many-to-many column="RouteId" class="ApprovedRoute" />
</set>
</joined-subclass>
</class>
</hibernate-mapping>
还有一点:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Transport" namespace="Transport.Models">
<class name="ApprovedRoute" table="ApprovedRoute">
<id name="Id">
<column name="id" not-null="true" />
<generator class="identity" />
</id>
<property name="Name" />
<set name="ControlPoints" table="M_ApprovedRoute_ControlPoint">
<key column="RouteId"></key>
<many-to-many column="PointId" class="ControlPoint" />
</set>
</class>
</hibernate-mapping>
我做错了什么?控制点和ApprovedRoute记录显示在表中,但M_ApprovedRoute_控制点仍然为空
p、 s..Save()调用Session.SaveOrUpdate(obj)非常简单。我只是将SaveOrUpdate包装在一个事务中,现在它就可以工作了
using (ITransaction tx = Session.BeginTransaction())
{
try
{
Session.SaveOrUpdate(obj);
Session.Flush();
tx.Commit();
}
catch (HibernateException)
{
tx.Rollback();
throw;
}
}