【发布时间】:2010-11-29 09:54:57
【问题描述】:
我有一个带有 ProbateCases 表和 Properties 表的数据库。 Properties 表对 ProbateCases 表有一个称为 ProbateCaseId 的外键,因此 ProbateCases 和 Properties 之间的关系是一对多的。
我的域层有一个 ProbateCase 类和一个 Property 类。 ProbateCase 类具有如下定义的属性集合:
private IList<Property> _properties = new List<Property>();
public virtual IEnumerable<Property> Properties { get { return _properties; } }
public virtual Property AddProperty()
{
Property property = new Property();
_properties.Add(property);
return property;
}
Fluent NHibernate 映射的对应部分如下所示:
HasMany(x => x.Properties).Where("Deleted = 0").KeyColumn("ProbateCaseId").Cascade.All().Access.CamelCaseField(Prefix.Underscore);
请注意,关联是单向的 - ProbateCase 类具有属性集合,但 Property 类没有 ProbateCase 成员。
我发现查询工作正常 - NHibernate 正在创建适当的 SQL 以获取具有适当 ProbateCaseId 值的属性。
但是,当我保存已添加新属性的 ProbateCase 时,INSERT SQL 不包含外键字段的值 - 所以我收到一个 SQL 异常,抱怨外键中有 NULL 值:
INSERT INTO AdminOverview.Properties (PropertyName) VALUES ('Name of property') -- Where the hell is the ProbateCaseId field value???
我应该期望 NHibernate 自己填充外键值,还是我应该做其他事情?
【问题讨论】:
标签: nhibernate fluent-nhibernate foreign-keys associations