【发布时间】:2012-06-01 16:12:54
【问题描述】:
我有以下两个课程:
广告
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 的新实例,然后用List<AdvertImage> 填充(广告的)AdvertImages 属性。
当我将我的Advert 对象持久化到数据库时,我希望将 AdvertImages 插入到他们的 AdvertImages 表中,但由于这两个表之间的关系,我需要先插入 Advert,所以在生成 PK Id 时,可以将其插入 AdvertImages 表中。 (当我创建 AdvertImage 列表时,我正在填充 Filename 属性,但显然在那个阶段没有新的 AdvertId,因此希望在将广告持久保存到数据库时填充它。
我尝试了不同的 Inverse() 和 Cascade 设置,但还没有成功。有人可以帮忙吗?
【问题讨论】:
标签: nhibernate fluent-nhibernate nhibernate-mapping fluent-nhibernate-mapping