我有以下两个课程:
广告
public virtual int Id { get; set;
public virtual IList<AdvertImage> AdvertImages { get; set; }
广告图片
public virtual int Id { get; set; }
public virtual string Filename { get; set;
public virtual Advert Advert { get; set; }
在数据库中,我的 AdvertImages 表具有 FK 'AdvertId',它与具有 'Id' PK 的 Adverts 表相关。
这是一对多映射,因为一个广告可以有许多图像。
我的 Fluent NHibernate 映射(为简洁而编辑)是:
广告地图
Id(x => x.Id)
.GeneratedBy.Identity();
...
HasMany(x => x.AdvertImages)
.KeyColumn("AdvertId")
.Inverse();
...
Table("Adverts");
广告图像地图
Id(x => x.Id)
.GeneratedBy.Identity();
...
References(x => x.Advert)
.Column("AdvertId");
...
Table("AdvertImages");
我正在Advert
代码中创建一个新实例,然后AdvertImages
用List<AdvertImage>
.
当我将我的Advert
对象持久化到数据库时,我希望将 AdvertImages 插入到他们的 AdvertImages 表中,但是由于这两个表之间的关系,我需要先插入 Advert,以便生成 PK Id ,然后可以将其插入 AdvertImages 表中。(当我创建 AdvertImage 列表时,我正在填充 Filename 属性,但显然在那个阶段没有新的 AdvertId,因此希望在将广告持久保存到数据库时填充它)。
我尝试过使用不同的 Inverse() 和 Cascade 设置,但还没有成功。有人可以帮忙吗?