次の2つのクラスがあります。
広告
public virtual int Id { get; set;
public virtual IList<AdvertImage> AdvertImages { get; set; }
AdvertImage
public virtual int Id { get; set; }
public virtual string Filename { get; set;
public virtual Advert Advert { get; set; }
DBでは、AdvertImagesテーブルにFK'AdvertId'があり、これはPKが'Id'であるAdvertsテーブルに関連しています。
これは1対多のマッピングであり、1つの広告に多くの画像を含めることができます。
私のFluentNHibernateマッピング(簡潔にするために編集)は次のとおりです。
AdvertMap
Id(x => x.Id)
.GeneratedBy.Identity();
...
HasMany(x => x.AdvertImages)
.KeyColumn("AdvertId")
.Inverse();
...
Table("Adverts");
AdvertImageMap
Id(x => x.Id)
.GeneratedBy.Identity();
...
References(x => x.Advert)
.Column("AdvertId");
...
Table("AdvertImages");
Advert
コード内の新しいインスタンスを作成してから、AdvertImages
(Advertの)プロパティに。を入力していList<AdvertImage>
ます。
オブジェクトをDBに永続化するときにAdvert
、AdvertImagesをAdvertImagesテーブルに挿入したいのですが、2つのテーブル間の関係により、PK Idが生成されるように、最初にAdvert挿入を行う必要があります。 、AdvertImagesテーブルに挿入できます。(AdvertImageのリストを作成するとき、Filenameプロパティにデータを入力していますが、その段階では明らかに新しいAdvertIdがないため、広告がDBに永続化されるときにデータを入力する必要があります)。
さまざまなInverse()とCascadeの設定を試してみましたが、まだ成功していません。誰か助けてもらえますか?