我正在使用 NHIBERNATE 使用 VB 开发 ASP.NET 来映射预先存在的数据库(SQL Server 2005)的表。我与实体之间有多对多的关系,我像这样映射:
<list name="PropName" table="TableHoldingRelation" lazy="false" >
<key column="idEntity1"></key>
<index column ="orderingColumn" ></index>
<many-to-many class="Entity2" column="idEntity2"></many-to-many>
</list>
映射工作完美,并且(Entity2)列表按所选列排序。
问题是该列不连续,因为可能缺少一些值(即:0、1、3、8)。NHibernate 将这些空间保留为 null/nothing 元素。我希望列表“压缩”,仅包含现有元素,按该列排序。
我可以在不更新数据库的情况下实现这一点吗?(更新不是一个好的解决方案,因为将来可能会删除某些元素)
在此先感谢您的帮助。
编辑:问题中的更多信息。这种情况下的表/实体指的是菜单和菜单项。我正在使用的应用程序是一个非常复杂的网站,有很多不同的角色。每个角色都有其独特的菜单配置和独特的项目。甚至有具有独特设置的单个用户。我的任务是重写 .NET 类和映射,因为它们真的很乱而且其他与这个问题无关的东西。所以我正在映射的数据库设计是(对于这个问题,显然还有其他表): 一张包含菜单及其属性的表(比如它们对应的角色) 一张包含菜单项及其属性的表(比如它们指向的链接) 一张表,其中包含 de 关系 menu-menuitem 和该菜单内的“位置”/订单列。
以防万一需要对问题有更多的了解。