gpt4 book ai didi

fluent-nhibernate - 在 fluentnhibernate 中使用引用作为 id

转载 作者:行者123 更新时间:2023-12-04 12:25:03 26 4
gpt4 key购买 nike

我有一个包含父级 ID 的子表。这是一对一的映射,但子表可能缺少值。我在映射这个时遇到了问题而没有出现错误......我已经尝试了几件事;映射同一列,具有不同的属性等。

Parent table  int idChild table  int parentidParent class  int idChild class  Parent parent // note I'm referencing parent, not using an int id..

Mapping

Id(x => x.Parent)
.Column("parentid"); // fails

Id(x => x.Parent.Id)
.Column("parentid"); // fails

References(x => x.Parent)
.Column("parentid"); // fails - missing id

// Adding an id field in addition to parent for
// child class (id is then the same as parent.id)
// fails on save
Id( x => x.Id )
.Column("parentid");
References(x => x.Parent)
.Column("parentid");

我希望子类没有明显的 Id 字段,而只是对父类的引用,因为没有父类永远不会有子类。但是,在数据库中,我只想存储父级的 ID。

任何想法我怎么可能做到这一点?

最佳答案

以下工作:

Id(x => x.Parent.Id).Column("MemberID");
References(x => x.Parent).Column("MemberID").ReadOnly();

引用的 ReadOnly 很重要,不要出现异常

编辑:不是那么简单......

我的 child 类(class)仍然有 Id 属性被调用。似乎 Parent.Id 的 Id 引用混淆了 nhibernate,它试图改为调用 child.Id。
我向 child 添加了以下内容,现在它似乎可以工作了..虽然是一个非常丑陋的黑客。
public virtual int Id {
get { return Parent.Id; }
set { Debug.Assert(value == Parent.Id); }
}

关于fluent-nhibernate - 在 fluentnhibernate 中使用引用作为 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3634710/

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