NHibernate映射索引超出范围

use*_*184 2 c# asp.net nhibernate

我有两节课:

 public class CarModel
    {
        public virtual int Id { get; set; }
        public virtual string model_name { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

  public class Transport
    {
          public virtual int Id { get; set; } 
          public virtual string lic_plate { get; set; } 
          public virtual int model { get; set; } 
          public virtual string odometer { get; set; }
          public virtual string moto_val { get; set; } 
          public virtual Class.CarModel Modelis { get; set; }    
    }
Run Code Online (Sandbox Code Playgroud)

并映射:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true" assembly="web_nt" namespace="web_nt.Models">

  <class name="Transport" table="transport" dynamic-update="true" lazy="false">
    <id name="Id" column="Id" type="int">
      <generator class="native" />
    </id>
    <property name="lic_plate" />
    <property name="model" />
    <property name="odometer" />
    <property name="moto_val" />
    <many-to-one name="Modelis" column="model"  cascade="none" class="web_nt.Models.Class.CarModel" lazy="false" /> 
  </class>

  <class name="web_nt.Models.Class.CarModel" table="car_model">
    <id name="Id" column="id" type="int">
      <generator class="native" />
    </id>
    <property name="model_name" />
  </class>

</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)

当我尝试向数据库发送值时,我得到异常(在视图中它完美地工作):+ $ exception {"索引超出范围.必须是非负的且小于集合的大小.\ r \nParameter name :index"} System.Exception {System.ArgumentOutOfRangeException}

而我在这里找不到可能出错的地方?

Rad*_*ler 5

这里的问题是双列映射:

<property name="model" />    
<many-to-one name="Modelis" column="model"  
     cascade="none" class="web_nt.Models.Class.CarModel" lazy="false" /> 
Run Code Online (Sandbox Code Playgroud)

两个属性(valueType和Reference)都以同一列为目标.哪种可能,但不适用于写操作.我们必须让他们中的一个只读的使用insert="false"update="false"

<property name="model" insert="false" update="false" />    
<many-to-one name="Modelis" column="model"  
     cascade="none" class="web_nt.Models.Class.CarModel" lazy="false" /> 
Run Code Online (Sandbox Code Playgroud)

所以,现在我们可以访问映射到同一列的两个属性,但是INSERT,UPDATE只会将该列作为目标.因为这是原始问题:... ndex超出范围.必须是非负的且小于集合的大小......

还要检查类似的问题:https://stackoverflow.com/a/24248912/1679310