假设我将一个简单的对象映射到一个包含重复记录的表,并且我想在我的代码中允许重复。我不需要更新/插入/删除这个表,只显示记录。
有没有一种方法可以在我的映射文件中放置一个假的(生成的)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/