3

VesselDetailオブジェクトと1対多の関係にあるVesselオブジェクトがあります。VesselDetailオブジェクトをVesselオブジェクトに追加して、Vesselオブジェクトを保存しようとすると、NHibernateはVesselDetailオブジェクトを挿入するときに外部キーを追加しないようです。

ここでどこが間違っているのですか?私はそれを理解することができません。

エラーメッセージ:BDN.FindVessel.Tests.Integration.NhibernateRepositoryTests.SaveVessel_ShouldAddDetailsToDb_WhenAddedToEntity:NHibernate.Exceptions.GenericADOException:could not insert:[BDN.FindVessel.Domain.VesselDetail] [SQL:INSERT INTO BoatsDetails(SaftyGear、OtherMachin 、TranslatorId、SpeenAndConsumption、MainMachinery、Created、Class、Capasities、Culture、Interior、Electronics、DeckGear)VALUES(?、?、?、?、?、?、?、?、?、?、?、?、?、? 、?); select SCOPE_IDENTITY()] ----> System.Data.SqlClient.SqlException:値NULLを列'BoatId'、テーブル'FindVesselTest.dbo.BoatsDetails'に挿入できません。列はnullを許可しません。INSERTは失敗します。ステートメントは終了されました。

public class Vessel
{
        public virtual int BoatId { get; set; }
        public virtual IList<VesselDetail> Details { get; set; }
        //...
}

public class VesselDetail
{
        public virtual int VesselDetailId { get; set; }
        //some other properties
        //..
}

public class VesselMap: ClassMap<Vessel>
{
    public VesselMap()
    {
        WithTable("Boats");

        Id(x => x.BoatId, "Id");

        //..

        HasMany(x => x.Details)
            .WithKeyColumn("BoatId") //foreign key in the BoatsDetails table
            .Cascade.All();
    }
}

public class VesselDetailMap:ClassMap<VesselDetail>
{
  public VesselDetailMap()
  {
      WithTable("BoatsDetails");

      Id(x => x.VesselDetailId, "Id");

      //...
  }
}
4

1 に答える 1