gpt4 book ai didi

c# - Nhibernate 将 id=0 存储为 null

转载 作者:行者123 更新时间:2023-11-30 14:56:06 25 4
gpt4 key购买 nike

我有一个 nHibernate 的小问题(流利的)我有两个对象,一个包含另一个 - 一个父对象和一个子对象(预定义对象,只读)。

映射:

public class ParentClass
{
public virtual int Id { get; set; }
public virtual ChildClass Metoda { get; set; }
}

public ParentClassMap() {
Table("Wyceny");
Id(x => x.Id).Column("Id").GeneratedBy.TriggerIdentity();
References(x => x.Metoda).Column("RMW_ID");
}

public ChildClass
{
public virtual int Id { get; set; }
public virtual string Nazwa { get; set; }
}

public ChildClassMap()
{
Table("Metody");
Id(x => x.Id).Column("Id");
Map(x => x.Nazwa).Column("Nazwa_met");
}

一切正常,直到我选择了 id = 0 的子对象,读取仍然适用于 id = 0,但是当我尝试使用正确的 ChildObject 保存或更新 Parent(之前通过 nHibernate 从 db 读取)时,nHibernate 存储 null而不是值(value)。

有什么建议吗?

休眠 3.3.1.4000流利的 1.4.0.0

最佳答案

这里的问题是 unsaved-value。 NHibernate 必须决定对对象的操作是插入还是更新。此决定来自 unsaved-value 设置,默认情况下 int 设置为 0。

尝试扩展 ChildClass 的映射:

public ChildClassMap()
{
Table("Metody");
Id(x => x.Id)
.Column("Id")
.UnsavedValue(-1);
...

参见 5.1.4. id , 引用:

unsaved-value (optional - defaults to a "sensible" value): An identifier property value that indicates that an instance is newly instantiated (unsaved), distinguishing it from transient instances that were saved or loaded in a previous session.

这很好Id mapping Adam Bar 的概述(文章的后半部分)

关于c# - Nhibernate 将 id=0 存储为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23827253/

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