问题标签 [mapping-by-code]
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.
c# - NHibernate MappingByCode Map Cascade 选项
我有以下带有 Dictionary 的课程:
当前由此代码映射:
我正在寻找一种方法来为 KeyMapping 设置不同的级联选项,并为 ValueMapping 设置不同的选项。但我只能在主要的“集合映射”中找到级联
我希望密钥具有 Cascade.None - 因为应用程序的不同部分管理该实体,并且值具有 Cascade.AllDeleteOrphan。
我怎么能用 MbC 做到这一点?
另外-如果我将“CollectionMapping”的级联设置-它反映了什么实体?
我在 nuget 上使用最新的 Nhibernate。
nhibernate - 自定义列上带有 InnerJoin 的 ManyToOne()
有没有办法用自定义列映射属性与数据库列,这不是 FK,只是一个候选键(它是唯一的表)?
如果没有,我在这里有什么选择?(需要select
通过连接表限制来限制结果)
nhibernate - NHibernate Table Per Subclass 导致无意义的 INSERT 语句 - 我做错了什么?
我有以下实体:
我使用以下 Hibernate Conformist 映射映射这些实体:
EnumCustomType
是将IUserType
C# 枚举映射到整数列的一个。
经过大量研究和咨询 NHibernate 参考文档和此博客(特定页面)(摘要)后,我制定了此设计和映射。我确信这是我想要的实体设计,但当然有可能(可能?)我弄错了映射。
当我启动并配置 NHibernate 时,它会加载映射并且不会抱怨。日志输出没有关于映射的警告。但是,当我创建 a 时PersonUser
,将值分配给它的所有属性,并将Add
其分配给ISession
,最奇怪的事情发生了:
重要的是,看看生成的 SQL:
这是没有意义的。它根本不对应于映射。它在一个表的插入语句中从三个不同的表中获取列。它有来自PersonUser
AND 的列ClientUser
(这应该是不可能的),它使用不存在的参数索引绑定参数,甚至不包括我设置的所有属性!
我已经玩了几个小时了,没有任何进展。我在这里完全不知所措。这没有任何意义。有人见过这个吗?知道发生了什么吗?
编辑我忘了提:我在这里使用鉴别器是因为我希望能够User
通过它的 ID 获得一个泛型,它返回正确的PersonUser
或ClientUser
取决于它是哪种类型。
c# - nhibernate - 将一张表映射到多个父母
我有一个类用于记录系统中所有其他类的更改:
我想要其他具有 HistoryLogEntry 对象列表的对象:
请注意,HistoryLogEntry 没有对 Person 或 Dog 的引用——这没关系,因为我想在 Person 和 Dog 中都使用 HistoryLogEntry 类。
我如何映射这种关系,以便 NHibernate 的导出模式将创建所有必要的列?现在我正在尝试:
但是,当使用 NHibernate 3.3 和 ExportSchemat 时,它不会在 HistoryLogEntry 中创建 IdEntity 列,我相信我需要这个列,以便 NHibernate 知道 HistoryLogEntries 放入我的集合中。
任何帮助将不胜感激。
nhibernate - 我如何映射通过 NHibernate 的代码?
我需要在多个属性上定义一个唯一约束。在 XML 中,这看起来像:
NHibernate (3.3+) 中的对应代码映射是什么?有没有其他方法可以创建多列唯一索引?
c# - Spring.net + Nhibernate 3.2 代码映射
我有一个ASP.NET MVC 4应用程序。它使用Spring.net和Nhibernate 3.2。配置由 xml 文件完成。
最近我进入了 Nhibernate 的Mapping by code新功能。我正在尝试在我当前的应用程序中实现它,因此将配置 ClassMapping 并据此更新方案。
我无法做到这一点,对我的 xml 配置进行了一些更改。
这是我的NHibernate配置
示例映射类
它似乎不起作用。未生成表。
我错过了什么吗?我正在考虑覆盖 LocalSessionFactoryObject ,因为它在下面的链接中为 FNH 完成。它对我也有用吗?我不确定它是否会破坏事务管理或其他东西。
请给我一些关于这个问题的见解。
在这种情况下最好的方法是什么?
c# - 通过代码、删除和 SQL 查询进行休眠映射
我正在使用 nhibernate 3 并通过如下代码进行映射:
这是我的简单代码:
我有几个问题:
- 为什么 nhibernate 将此代码转换为这样的 SQL 查询(按确切顺序):
- UPDATE 清除 PubCalcMscPlFactors 并将 PubCalcInvokes 设置为 NULL FK
- UPDATE 清除了 PubCalcMscPlFactors 并将 FK 设置为 PubCalcInvokes,在 WHERE 条件下它使用来自 PubCalcMscPlFactors 的 PK
- DELETE 清除 PubCalcMscPlFactors 集合
- 是否可以将此行为更改为仅删除?
nhibernate - NHibernate Conformist 使用一组简单类型而不是一组实体进行多对多映射
我正在使用 NHibernate Conformist 映射。我已经为我的各种集合属性使用ManyToMany
、OneToMany
、Element
和关系类型创建了一些复杂的映射。Component
但我今天遇到了一个让我难过的人。
表Permission
有列PermissionId
和Name
。然后是UserPermission
带有列和的表和带有UserId
列PermissionId
和GroupPermission
的GroupId
表PermissionId
。
如您所见,Permission
是一个实体,用户和权限之间以及组和权限之间存在多对多的关系。但是,为了便于使用User
andGroup
对象,我不想要User
andGroup
拥有一个(使用ConformistSet<Permission>
中的关系类型很容易实现)。ManyToMany
我想要User
并Group
拥有一组权限名称。通常我会用Element
关系类型来实现这一点,除了整个多对多使用连接表问题。
如何映射一组也是多对多的简单类型?
c# - 如何使用 NHibernate Mapping.ByCode 在非主键字段上加入表?
我有一张员工表:
positionId 映射到位置表:
ReportsToId 字段是该职位经理的职位 ID。
我想选择一个员工、他们的职位和他们的经理的详细信息。
这将如何使用 NHibernate 的 Mapping.ByCode 来完成。
ReportsToId 字段不是关键字段。从我在网上阅读的内容来看,这似乎会影响映射......
c# - 如何让 NHibernate 删除一对一关系中的孤儿?
我们的模型中有一个对象,称为 X 类。我们的模型中有几个其他类具有 X 类的实例作为属性,称为 A、B、C 等。这本质上是一对一一个映射,因为每个 X 只能属于一个父类。为了在数据库端映射这种关系,我们目前在表 A、B 和 C 中使用 X 表的外键。对于 NHibernate 映射,我们目前在 A、B 和 C 的映射中使用类:
这主要用于保存、检索和更新我们的 X 类——我们在让 NHibernateOneToOne
映射正常工作时遇到了很多问题。问题是,当您使用持久类 A 并将其 X 替换为 X 的新实例然后保存该 A 实例时,新的 X 实例将被写入数据库,并且 A 列中的外键被更新,但是旧的 X 并没有被删除,所以我们现在有一个孤立的 X。
我们希望自动删除那些孤立的 X。我们希望 NHibernate 这样做,因为 X 是一个复杂的类,它与其他表有许多关系,我们设置了级联以正确处理这些表 - 我设置了一个 SQL 脚本来正确删除孤立的 Xes,它大约是 50行长。
我们试图避免涉及在类 X 中引用其父项的解决方案,因为它总共可以属于 5 个类,并且诸如 A 类有一个 X,B 类有 2 个 X 的情况命名属性等
到目前为止我尝试过的事情:
添加DeleteOrphans
到ManyToOne
映射 - 不起作用
OneToOne
映射 - 真的希望密钥在另一个表中,并且似乎不支持级联删除。
还考虑了:
NHibernate 似乎不支持设置某种甚至在发生更新或删除等事情时触发
显然,只有OneToMany
和ManyToMany
映射支持DeleteOrphans
,因此,我可以让实际属性使用某种列表或集合,并使用 getter 和 setter 使其看起来像模型其余部分的普通属性。听起来很 hacky,它可能需要在 X 中引用其他类。
数据库触发器——我还没有真正检查过是否可以以这种方式使用 SQL Server 触发器,但这听起来是一个非常尴尬的解决方案。
有人对如何使这项工作有任何想法吗?