gpt4 book ai didi

nhibernate - 流利的 NHibernate : foreign key field not being set in unidirectional association

转载 作者:行者123 更新时间:2023-12-02 00:36:45 25 4
gpt4 key购买 nike

我有一个数据库,其中包含一个 ProbateCases 表和一个 Properties 表。 ProbateCases 表有一个名为 ProbateCaseId 的 ProbateCases 表的外键,因此 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 类有一个 Properties 集合,但 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 自己填充外键值,还是我应该做其他事情?

最佳答案

来自 http://nhibernate.info/doc/nh/en/index.html#collections-onetomany :

Very Important Note: If the column of a association is declared NOT NULL, NHibernate may cause constraint violations when it creates or updates the association. To prevent this problem, you must use a bidirectional association with the many valued end (the set or bag) marked as inverse="true". See the discussion of bidirectional associations later in this chapter.

关于nhibernate - 流利的 NHibernate : foreign key field not being set in unidirectional association,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4302560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com