如何查询NHibernate中的多对多关系?
我对NHibernate非常陌生,我想开始使用这项伟大的技术进行开发 以下是我的表格关系: 表架构 我已将hbm.xml模式定义如下:如何查询NHibernate中的多对多关系?,nhibernate,many-to-many,hibernate-mapping,Nhibernate,Many To Many,Hibernate Mapping,我对NHibernate非常陌生,我想开始使用这项伟大的技术进行开发 以下是我的表格关系: 表架构 我已将hbm.xml模式定义如下: <?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> <class name="TelDir.Core.Domain.Airport, TelDir.Core" table="tblAirp
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="TelDir.Core.Domain.Airport, TelDir.Core" table="tblAirport" lazy="false">
<id name="ID" column="AirportID" unsaved-value="0">
<generator class="identity" />
</id>
<property name="AirportShortName" column="AirportShortName" />
<property name="AirportFullName" column="AirportFullName" />
<set name="Groups" cascade="none" table="tblAirportGroup" lazy="false" access="readonly">
<key column="AirportId"/>
<many-to-many class="TelDir.Core.Domain.Group, TelDir.Core" column="GroupId"/>
</set>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="TelDir.Core.Domain.Group, TelDir.Core" table="tblGroup" lazy="false">
<id name="ID" column="GroupID" unsaved-value="0">
<generator class="identity" />
</id>
<property name="GroupName" column="GroupName" />
<bag name="Airports" cascade="none" table="tblAirportGroup" lazy="false" >
<key column="GroupID"/>
<many-to-many class="TelDir.Core.Domain.Airport, TelDir.Core" column="AirportId"/>
</bag>
</class>
</hibernate-mapping>
我的映射正确吗?如何检索属于机场的GroupName列表
我尝试过使用这种语法
ISession session = NHibernateSessionManager.Instance.GetSession();
ISet<Group> rValue = session.CreateCriteria(typeof(Airport))
.CreateCriteria("Groups")
.Add(Expression.Eq("ID", ap.ID))
.List() as ISet<Group>;
但它没有给我任何结果
你能给我介绍一下吗
致以最诚挚的问候,这是您如何获取包含id为33的Airport的组的方法,例如:
var groups = session.CreateCriteria<Group>()
.CreateCriteria("Airports")
.Add(Restrictions.Eq("ID", 33))
.List<Group>();
顺便问一下,我怎样才能从机场删除一个组?
var groups = session.CreateCriteria<Group>()
.CreateCriteria("Airports")
.Add(Restrictions.Eq("ID", 33))
.List<Group>();