gpt4 book ai didi

nhibernate 动态插入因某些空组件属性而失败

转载 作者:行者123 更新时间:2023-12-01 13:07:32 26 4
gpt4 key购买 nike

我有一个不接受空值并且每个字段都有默认值的数据库。使用流畅的 nHibernate,如果我有一个包含一些但不是所有属性的组件,我会在插入时收到错误。我只是想知道如何将 DynamicInsert 标志降低到组件级别。也许已经晚了,但我会把它丢在这里,看看它会去哪里。

映射:

 public ClientMap()
{
Table("Clients");
DynamicInsert();
DynamicUpdate();
CompositeId()
.KeyProperty(x => x.Accountnumber, "acct_no")
.KeyProperty(x => x.Transferaccount, "tr_acct_no");

Component(c => c.Address,
m =>{
m.Map(x => x.Streetaddress, "coaddress").Not.Nullable().Default("");
m.Map(x => x.City, "cocity").Not.Nullable().Default("");
m.Map(x => x.Postalcode, "costate").Not.Nullable().Default("");
m.Map(x => x.State, "cozip").Not.Nullable().Default(""); });
}

测试:

Client nw = new Client{ Address = new Address{Streetaddress = "my address"},Accountnumber = "6543219",Transferaccount = "1"};
IRepository repo2 = new Repository(session);
repo2.Save(nw);

错误:

无法插入:[BusinessObjects.Client#BusinessObjects.Client][SQL: INSERT INTO Clients (coaddress, cocity, cozip, costate, acct_no, tr_acct_no) VALUES (?, ?, ?, ?, ?, ?)]

最佳答案

我不确定,但我认为您指定的“NotNullable”和“Default”映射属性仅在您使用 NHibernate 映射创建 DB 模式时有影响/仅使用,并且它们具有对 NHibernate 将插入您的数据库的内容没有实际影响。

如果您想要某个属性的默认值,我认为您应该在具有该属性的类的构造函数中自己为该属性指定默认值。

关于nhibernate 动态插入因某些空组件属性而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1951393/

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