Fluent Nhibernate在插入过程中失败

Fluent Nhibernate在插入过程中失败,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我在使用Fluent Nhibernate时遇到问题,我有以下模型。当我试图用新的地理位置保存酒店时,我遇到了外键异常,看起来Nhibenate无法以正确的顺序保存数据,这是我可以通过Fluent Nhibernate纠正的吗 public class Geography { public virtual int CityID { get; set; } public virtual string CountryCode { get; set; } } public class Hot

我在使用Fluent Nhibernate时遇到问题,我有以下模型。当我试图用新的地理位置保存酒店时,我遇到了外键异常,看起来Nhibenate无法以正确的顺序保存数据,这是我可以通过Fluent Nhibernate纠正的吗

public class Geography {
  public virtual int CityID { get; set; }
  public virtual string CountryCode { get; set; }
}

public class Hotel
{
        public virtual int HotelID { get; set; }
        public virtual Geography City { get; set; }

}
映射

 public class HotelMap : ClassMap<Hotel>
 {
  public HotelMap()
  {
   Id(x => x.HotelID)
                .GeneratedBy
                .Identity();             
            References(x => x.City, "CityId")
                .Cascade.All();                                               
  }

 }

 public class GeographyMap : ClassMap<Geography>
 {
  public GeographyMap()
  {
   Id(x => x.CityID);
   Map(x => x.CountryCode);
            HasMany(a => a.Hotels)
                .Cascade.All();
  }
 }
公共类HotelMap:ClassMap
{
公共HotelMap()
{
Id(x=>x.HotelID)
.产生于
.Identity();
参考文献(x=>x.城市,“城市ID”)
.Cascade.All();
}
}
公共类地理地图:类地图
{
公共地理地图()
{
Id(x=>x.CityID);
Map(x=>x.CountryCode);
拥有许多(a=>a.酒店)
.Cascade.All();
}
}
添加生成的映射

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-access="property" auto-import="true" default-cascade="none" default-lazy="true">
  <class xmlns="urn:nhibernate-mapping-2.2" mutable="true" name="Hotel" table="`Hotel`">
    <id name="HotelID" type="System.Int32">
      <column name="HotelID" />
      <generator class="assigned" />
    </id>
    <many-to-one cascade="all" class="Geography" foreign-key="HotelGeography" name="City">
      <column name="CityId" />
    </many-to-one>
  </class>
</hibernate-mapping>

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-access="property" auto-import="true" default-cascade="none" default-lazy="true">
  <class xmlns="urn:nhibernate-mapping-2.2" mutable="true" name="Geography" table="`Geography`">
    <id name="CityID" type="System.Int32">
      <column name="CityID" />
      <generator class="assigned" />
    </id>
    <bag cascade="all" inverse="true" name="Hotels" mutable="true">
      <key>
        <column name="HotelID" />
      </key>
      <one-to-many class="Hotel" />
    </bag>
    <property name="CountryCode" type="System.String">
      <column name="CountryCode" />
    </property>
  </class>
</hibernate-mapping>

尝试为
地理
类指定标识生成器。如果希望数据库生成唯一标识符(如标识),可以通过将
.GeneratedBy.Native()
添加到
GeographyMap
类中的
Id(…)

.Inverse()
添加到集合映射中来实现


有关更多详细信息,请查看和

我提供了我自己的Id值,这不应该是个问题OK,无论如何,您应该使用
.GeneratedBy.Assigned()
,指出这一点,因为identity是
int
数据类型的默认FluentNHibernate行为。我添加了生成的映射,它看起来似乎仍然崩溃。错误是什么?创建和保存新实体的代码是什么?