问题标签 [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.
.net - NHibernate 集合映射不是 DRY 吗?
我不是高级 NHibernate 用户,所以这可能有点重要,我只是还没有发现它.. 但到底是什么。
考虑类:
指定 NHibernate Set 元素时,仅写以下内容是不够的:
相反,我至少必须写:
这似乎违反了 DRY 原则。如果它是 Set,则默认应该是一对多的关系。该类应从集合的泛型类型推断,并且作为键列,应使用集合元素类的主键。
在我看来,这似乎是一个合理的默认值。那么,为什么 NHiberbate 对此并不聪明,并要求我输入这些额外的 3 行?
c# - Nhibernate 将一个类与其自身进行一对一映射
我们有一种情况,我们想要定义一个关系,其中一个类(名为 Module)可能与作为它的前身的 Module 对象相关,也可能不相关。可以有零个或没有前任。该类如下所示:
我们已经定义了映射,以便 Predecessor 是 Module 类型的属性,如下所示:
但是,我们收到有关映射无法编译的投诉,因为它找不到“模块”类型。我们已经尝试了类的长名称
和类的完全限定名称
无济于事。我的问题是:
我们是否正确地映射了它,如果没有,那么我们如何正确地映射它?
c# - 我可以信任 NHibernate Fluent Automappings 吗?
我目前正在测试使用 NHibernate Fluent Automappings 来映射我的域对象并创建我的数据库模式。
这是个好主意还是坏主意?
c# - NHibernate 一对多映射问题
我必须映射两个具有外键关系的简单表。其中一个表是Contact包含列id(int 类型的主键)、name、address和guid(新添加且不是主键)。另一个是phone__number包含列id(int 类型的主键)、 contact ___ id (联系人表中 id 的外键)和phone__number。
Contact 表的映射文件如下:
Phone_number 表的映射文件是:
Contact 和 PhoneNumber 类是:
当我分别加载联系人和电话号码时,它可以工作,但是在添加 set 元素以获得一对多关系后,nhibernate 给出了一个错误:
NHibernate.MappingException:为类型 OfflineDbSyncWithNHibernate.Models.Contact 指定的映射信息无效,请检查映射文件中的属性类型不匹配
我是 nHibernate 的新手,所以我不确定 set 元素是否有错误,或者我什至不应该使用它。任何帮助将不胜感激。
c# - 如何在 NHibernate 中映射两个具有外键关系的表?
有两个表,Contact和Phone__number。Phone_number 包含一个列 contact_id,它是Contact表中 id 的外键。如何在 Nhibernate 中映射这两个表,以便在我的联系人类中获得电话号码列表。
c# - NHibernate Fluent 跨 DLL 的自动映射
我在 1 个项目/dll 中有一个 Person 类和一个派生自另一个项目/dll 中的 Person 的 StandardUser 类。我有一个包含 StandardUser 的 Password 类(Password 和 StandardUser 在同一个 dll 中)。
我似乎无法让流利的自动映射在这种情况下工作。
它告诉我:NHibernate.MappingException:来自表密码的关联指的是未映射的类:DomainModel.Users.DomainObjects.StandardUser
如果我将 Person 类移动到与 StandardUser 相同的 dll 中,那么它可以工作。如果 Password 包含 Person 而不是 StandardUser,它也可以工作。
我是否遗漏了某些内容,或者 Fluent Automappings 不支持此功能?
编辑/回答:看来您必须在 AutoMappings 中映射 StandardUser 的程序集。在映射基类之前添加。我不确定这是设计使然还是错误。
nhibernate - 为 NHibernate 中的一个属性执行自定义 sql
据我了解,NHibernate 内置了对时间戳的支持。但是,您似乎只能指示 NHibernate 永远不要更新该属性或始终更新它。
在我目前正在处理的项目中,有几个表同时具有“ created_time
”和“ updated_time
”,它们都将由数据库生成。
我不知道如何指示 NHibernate仅在插入“ ”以及插入和更新“ ”时将“ getdate()
”用于两个属性螺母。created_time
updated_time
这可能吗?
PS:我正在使用旧数据库,并且不允许更改它,因此触发器等不是可能的解决方案。
nhibernate - NHibernate fetch="join" 映射属性似乎不起作用
用 NH 映射字典。声明如下:
我期望生成一个 SQL 查询,但我得到了两个:一个用于实际对象的选择,然后是一个用于字典内容的选择。
有任何想法吗?
c# - 在 NHibernate 中查询未映射的列
我有一个使用 NHibernate 映射到表的类。问题是只有一些属性映射到表中的列。这很好,因为我们用于显示的唯一列是映射的,但是我想知道是否有任何方法可以查询表中未映射到我的类中的属性的其他列。
例如,我们有一个包含以下列的表:
我们有一个对象
和name
和customerId
被映射DateCreated
并不是因为我们从不在任何地方显示它。我们想查询在Customer
特定日期创建的客户表。有没有办法在不映射的情况下做到这一点DateCreated
?此外,最好使用标准 API 来执行此操作。
xml - NHibernate 映射泛型类
如何在 NHibernate 中为泛型类创建映射文件。假设我有一个类 Foo 它在映射文档中的外观如何?类名="mydll.Foo ???? , mydll" ...
我知道如果它是 Foo 它会是: class name="mydll.Foo`1[[mydll.Fee, mydll]], mydll"
会不会是这样的: class name="mydll.Foo`1[[mydll.Fee, mydll],[mydll.Fi, mydll]], mydll" (我试过这个,但没有用。