问题标签 [fluent-nhibernate-mapping]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
188 浏览

nhibernate - Fluent NHibernate 可以支持 NHibernate 的所有映射吗

我想将 Fluent NHibernate 与 NHibernate 一起使用。但我想知道 Fluent NHibernate 是否支持来自 NHbernate 的所有映射。还是坚持使用 NHibernate 更好?

0 投票
3 回答
2358 浏览

nhibernate - NHibernate 使用复合键将两个表连接成一个实体

我有以下数据结构:

所以我可以用两个连接的表来获得这样的数据:

从我的领域的角度来看,我只关心Resume实体。我不想拥有Resume实体及其集合,Resume_Translations因为我只会拥有一个Resume具有当前翻译的实体。

我当前与 Fluent NHibernate 的映射如下:

我可以毫无问题地从存储库中获取我想要的内容,只需传入 WHERE 谓词、简历的 ID 和我想要的语言。

但是我在插入和更新值时遇到了一些问题。

我的问题是:如何定义 NHibernate 仅在 Resume_Translation 表中插入新记录而不是更新当前实体的记录的映射?

所以我想要实现的是如果我在数据库中有以下记录:

加入有利于表之间的一对一关系,所以如果我将它放入我的实体并更改语言和翻译,nhibernate 正在执行更新,我可以理解它。如果我尝试通过不同的语言和翻译添加具有相同 ID 的新实体,nhibernate 会产生一个错误,即密钥已经存在并且我也理解它。

所以,我当然走错了路,但如果有人能指出我如何实现我想要的映射的正确解决方案,我将不胜感激。

另一个问题,您如何从业务角度处理实体及其翻译?

在此先感谢您的帮助。

托马斯

0 投票
1 回答
306 浏览

c# - 模型中的空子,使用引用<>保存时为空

我有一个像这样声明的对象

我正在为孩子设置一个“空对象”,因为我想要一个空对象而不是我的模型中的 null。

在我的数据库中,我有一个这样的表

然后我在我的映射中

这就是问题所在。当我尝试创建一个新的MyObject时,我会得到一个错误对象引用了一个未保存的瞬态实例。所以,我这样做了:

这可以保存,但现在我的对象有一个 null 孩子,这不是我想要的行为。我可以使用的技巧是在创建 new 后将孩子重置为空MyObject,但我想看看是否有更好的方法。

Child 在我的对象中需要不为 null,但如果子对象的 ID 为 0,则保存为 null。

编辑

只是在测试整个 null/reset 策略,但它不起作用。对我模型中任何对象的后续休眠请求会导致瞬态对象错误。

0 投票
1 回答
522 浏览

c# - 根据 ID 指定何时返回 null 以及何时抛出 fluent nHibernate

我们正在使用具有相当粗糙数据模型的遗留代码库。现在,我们有一个如下所示的对象映射:

在应用程序中,没有书架的书的 ShelfId 为 0。 Shelf 表中没有 Id 为 0 的行,我们依赖 nhibernate.NotFound.Ignore()返回 null,稍后我们将检查并处理它。

这已经让我们走到了这一步,但是,现在我们试图在尝试访问 Shelf 表中没有条目的非 0 ShelfId 时抛出异常。

理想情况下,nhibernate 只会在找不到 ID 为非 0 的 Shelf 的情况下抛出异常,并在请求 ID 为 0 的 Shelf 时返回 null。

任何帮助都将是特殊的!

0 投票
2 回答
1210 浏览

fluent-nhibernate - Fluent NHibernate - 无法将项目添加到具有持久数据的 HasMany 关系

我有以下课程:

而这两个映射:

当我从数据库中获取客户端时:

所有的数据都在那里,这很棒。但是当我尝试添加一个新的 ClientMonthlyRevenue 孩子时:

我得到错误:

我在这里遗漏或误解了什么吗?我需要修改什么才能将项目添加到此持久列表中?

0 投票
1 回答
46 浏览

nhibernate - NHibernate 2 一对多的持久性

我有以下使用存储库模式的代码,由流利的 nhibernate 自动映射到 MySQL DB 支持。

下面的代码片段将一个用户和一个人添加到模型中,然后持久化到数据库中。

它可以工作,但是我必须记住,user.Person.User = user;当对象被持久化时,Person将 FK userId 设置为 null。

  1. 有没有办法自动导致Person.User填充,或者我需要创建一个方法来做到这一点?

  2. 有没有办法使与该用户关联的所有对象都被持久化(例如,仅在一个对象上调用 repository.Save(obj) 并导致其他对象也被持久化。)

    /li>
0 投票
1 回答
508 浏览

c# - 流利的 Nhibernate,在一对多的关系中苦苦挣扎

总是抛出以下异常:

无法初始化集合:[FatorM.Sieq.Model.Entities.Culto.Ofertas#4][SQL: SELECT ofertas0_.Culto_Id as Culto3_1_, ofertas0_.Id as Id1_, ofertas0_.Id as Id9_0_, ofertas0_1_.Anonimo as Anonimo9_0_, ofertas0_1_ .Banco_Id as Banco3_9_0_, ofertas0_1_.Culto_Id as Culto4_9_0_, ofertas0_1_.Frequentador_Id as Frequent5_9_0_, ofertas0_1_.NomeAvulso as NomeAvulso9_0_, ofertas0_1_.NumeroCheque as NumeroCh7_9_0_, ofertas0_1_.Valor as Valor9_0_, ofertas0_.TipoOferta_Id as TipoOferta2_11_0_ FROM dbo.[Oferta] ofertas0_ inner join dbo .[贡献] ofertas0_1_ on ofertas0_.Id=ofertas0_1_.Id WHERE ofertas0_.Culto_Id=?]

它的内部例外是:

列名“Culto_Id”无效。列名“Culto_Id”无效。

是的!两次...

下面有代码:

1)CultoMapping.cs:

2)OfertaMapping.cs:

3)DizimoMapping.cs:

4) ContribuicaoMapping.cs:

Oferta和Dizimo从Contribuicao延伸。

0 投票
2 回答
123 浏览

c# - NHibernate 中丢失的继承

我进行了从 EF4 到 nHibernate 的转换,现在继承几乎没有问题。

我的实体和映射:

我通过的测试:

和失败的测试:

有人可以解释一下为什么 NH 不能正确解决继承问题吗?同样的问题适用于每个类的表和每个层次结构的表。

0 投票
1 回答
232 浏览

fluent-nhibernate - 如何将两列或多列映射到一个对象中?

使用 fluent-nhibernate 映射,我试图满足创建以下内容的要求,我认为我只是没有在 Google 中使用正确的关键字......

我有一个表和列:

我想把它映射到一个像这样的对象:

感谢你的协助!

0 投票
2 回答
1534 浏览

nhibernate - Fluent NHibernate - 带有 Where 子句的 HasOne

使用 Fluent NHibernate,我可以通过以下方式将一对多关系映射到我的 User 类:

这按预期工作,它只获取尚未删除的成员资格记录。不说我有一个名为针对会员资格的最新字段,我知道这会为每个用户返回一条记录,我想说:

但是没有 Where 方法。我知道我可以通过以下代码在代码中做到这一点:

但这不允许我对此属性进行 LINQ 查询。过去我只是接受这是一个限制,但它确实开始在性能方面咬我。

如果有人可以提供帮助,我将不胜感激。