nhibernate - 有没有办法在 NHibernate 中伪造一个 ID 列?

标签 nhibernate nhibernate-mapping

假设我将一个简单的对象映射到一个包含重复记录的表,并且我想在我的代码中允许重复。我不需要更新/插入/删除这个表,只显示记录。

有没有一种方法可以在我的映射文件中放置一个假的(生成的)ID 列来欺骗 NHibernate 认为这些行是唯一的?创建复合键将不起作用,因为所有列中可能存在重复项。

如果这不可能,解决此问题的最佳方法是什么?

谢谢!

编辑:查询似乎是要走的路

最佳答案

NHibernate 映射假设您要保存更改,因此需要某种 ID。

如果您被允许修改表,您可以添加一个标识列(SQL Server 命名 - 您的数据库可能不同)以自动生成唯一 ID - 现有代码应该不受影响。

如果您被允许添加到数据库,但不允许添加到表,您可以尝试定义一个包含 RowNumber 合成(计算)列的 View ,并将其用作要从中加载的数据源。根据您的数据库供应商(以及处理 View 和索引的产品),这可能会面临一些性能问题。

我还没有尝试过的另一种选择是将您的类映射到 SQL 查询而不是表。 IIRC,NHibernate 支持在映射文件中命名 SQL 查询,您可以将它们用作“数据源”而不是表或 View 。

关于nhibernate - 有没有办法在 NHibernate 中伪造一个 ID 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/259326/

相关文章:

c# - Fluent Nhibernate、复合键无法解析属性 : error message

c# - 使用 HQL 语句按 ID 列表删除多条记录

c# - ORM市场分析

nhibernate - 我在哪里可以获得最新的 FluentNHibernate 版本?

c# - 你如何映射一个组件,它也是 NHibernate hbm xml 中的主键(或在 fluent-nhibernate 类映射中)?

c# - 如何映射NHibernate变量表引用?

nhibernate - 无法删除 NHibernate 中一对多关系的子实体

asp.net-mvc - 从ASP.Net Webforms反模式毕业

nhibernate - 使用代码映射生成 HBM 文件