问题标签 [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.
nhibernate - Fluent NHibernate 可以支持 NHibernate 的所有映射吗
我想将 Fluent NHibernate 与 NHibernate 一起使用。但我想知道 Fluent NHibernate 是否支持来自 NHbernate 的所有映射。还是坚持使用 NHibernate 更好?
nhibernate - NHibernate 使用复合键将两个表连接成一个实体
我有以下数据结构:
所以我可以用两个连接的表来获得这样的数据:
从我的领域的角度来看,我只关心Resume
实体。我不想拥有Resume
实体及其集合,Resume_Translations
因为我只会拥有一个Resume
具有当前翻译的实体。
我当前与 Fluent NHibernate 的映射如下:
我可以毫无问题地从存储库中获取我想要的内容,只需传入 WHERE 谓词、简历的 ID 和我想要的语言。
但是我在插入和更新值时遇到了一些问题。
我的问题是:如何定义 NHibernate 仅在 Resume_Translation 表中插入新记录而不是更新当前实体的记录的映射?
所以我想要实现的是如果我在数据库中有以下记录:
加入有利于表之间的一对一关系,所以如果我将它放入我的实体并更改语言和翻译,nhibernate 正在执行更新,我可以理解它。如果我尝试通过不同的语言和翻译添加具有相同 ID 的新实体,nhibernate 会产生一个错误,即密钥已经存在并且我也理解它。
所以,我当然走错了路,但如果有人能指出我如何实现我想要的映射的正确解决方案,我将不胜感激。
另一个问题,您如何从业务角度处理实体及其翻译?
在此先感谢您的帮助。
托马斯
c# - 模型中的空子,使用引用<>保存时为空
我有一个像这样声明的对象
我正在为孩子设置一个“空对象”,因为我想要一个空对象而不是我的模型中的 null。
在我的数据库中,我有一个这样的表
然后我在我的映射中
这就是问题所在。当我尝试创建一个新的MyObject
时,我会得到一个错误对象引用了一个未保存的瞬态实例。所以,我这样做了:
这可以保存,但现在我的对象有一个 null 孩子,这不是我想要的行为。我可以使用的技巧是在创建 new 后将孩子重置为空MyObject
,但我想看看是否有更好的方法。
Child 在我的对象中需要不为 null,但如果子对象的 ID 为 0,则保存为 null。
编辑
只是在测试整个 null/reset 策略,但它不起作用。对我模型中任何对象的后续休眠请求会导致瞬态对象错误。
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。
任何帮助都将是特殊的!
fluent-nhibernate - Fluent NHibernate - 无法将项目添加到具有持久数据的 HasMany 关系
我有以下课程:
而这两个映射:
当我从数据库中获取客户端时:
所有的数据都在那里,这很棒。但是当我尝试添加一个新的 ClientMonthlyRevenue 孩子时:
我得到错误:
我在这里遗漏或误解了什么吗?我需要修改什么才能将项目添加到此持久列表中?
nhibernate - NHibernate 2 一对多的持久性
我有以下使用存储库模式的代码,由流利的 nhibernate 自动映射到 MySQL DB 支持。
下面的代码片段将一个用户和一个人添加到模型中,然后持久化到数据库中。
它可以工作,但是我必须记住,user.Person.User = user;
当对象被持久化时,Person
将 FK userId 设置为 null。
有没有办法自动导致
Person.User
填充,或者我需要创建一个方法来做到这一点?有没有办法使与该用户关联的所有对象都被持久化(例如,仅在一个对象上调用 repository.Save(obj) 并导致其他对象也被持久化。)
/li>
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延伸。
c# - NHibernate 中丢失的继承
我进行了从 EF4 到 nHibernate 的转换,现在继承几乎没有问题。
我的实体和映射:
我通过的测试:
和失败的测试:
有人可以解释一下为什么 NH 不能正确解决继承问题吗?同样的问题适用于每个类的表和每个层次结构的表。
fluent-nhibernate - 如何将两列或多列映射到一个对象中?
使用 fluent-nhibernate 映射,我试图满足创建以下内容的要求,我认为我只是没有在 Google 中使用正确的关键字......
我有一个表和列:
我想把它映射到一个像这样的对象:
感谢你的协助!
nhibernate - Fluent NHibernate - 带有 Where 子句的 HasOne
使用 Fluent NHibernate,我可以通过以下方式将一对多关系映射到我的 User 类:
这按预期工作,它只获取尚未删除的成员资格记录。不说我有一个名为针对会员资格的最新字段,我知道这会为每个用户返回一条记录,我想说:
但是没有 Where 方法。我知道我可以通过以下代码在代码中做到这一点:
但这不允许我对此属性进行 LINQ 查询。过去我只是接受这是一个限制,但它确实开始在性能方面咬我。
如果有人可以提供帮助,我将不胜感激。