Nhibernate-映射单行表

Nhibernate-映射单行表,nhibernate,mapping,Nhibernate,Mapping,我有一个现有的nhibernate web应用程序,我将添加一个包含所有系统范围配置选项的配置表。此表将始终包含且仅包含一行。每列将包含一个配置属性。我计划拥有一个域对象,该对象将为表中的每一列都有一个匹配的属性。用户将能够在管理屏幕中修改每个属性的值。我计划在安装期间用一行填充表,为每个配置选项设置初始值。我的问题如下: 1) 我只希望系统更新现有行,并希望阻止表上的任何删除或插入。当然,我可以通过不创建执行删除或更新的应用层函数来实现这一点,但我想知道NHibernate是否有一些内置映射或

我有一个现有的nhibernate web应用程序,我将添加一个包含所有系统范围配置选项的配置表。此表将始终包含且仅包含一行。每列将包含一个配置属性。我计划拥有一个域对象,该对象将为表中的每一列都有一个匹配的属性。用户将能够在管理屏幕中修改每个属性的值。我计划在安装期间用一行填充表,为每个配置选项设置初始值。我的问题如下:

1) 我只希望系统更新现有行,并希望阻止表上的任何删除或插入。当然,我可以通过不创建执行删除或更新的应用层函数来实现这一点,但我想知道NHibernate是否有一些内置映射或配置选项可以提供帮助。我不希望在数据库级别这样做,因为我们正在编写一个与数据库无关的应用程序,到目前为止,还没有编写任何数据库平台特定的代码或脚本

2) 该类的映射是否与我的其他“普通”类不同?

回答1)NHibernate没有任何“配置”,只能阻止“插入”和“删除”。您可以做一些变通,例如编写一个您自己的PreDeleteEventListener和PreInsertEventListener,如果实体是您的配置实体,则停止更新和插入

但是,我建议您通过应用程序强制执行此配置,即配置存储库只应公开“更新”功能,而不应公开更多

回答2)我假设此表没有主键(因为它是表中唯一的一行)。据我所知,NHibernate无法处理没有主键的实体。您可能需要添加主键才能使其用于NHibernate。回答1)NHibernate没有任何“配置”只允许阻止“插入”和“删除”。您可以做一些变通,例如编写一个您自己的PreDeleteEventListener和PreInsertEventListener,如果实体是您的配置实体,则停止更新和插入

但是,我建议您通过应用程序强制执行此配置,即配置存储库只应公开“更新”功能,而不应公开更多


回答2)我假设这个表没有主键(因为它是表中唯一的一行).据我所知,NHibernate无法与没有主键的实体一起工作。您可能需要添加主键才能使其为NHibernate工作

感谢事件侦听器的建议。我认为这会很好。看起来我将与任何其他域对象一样映射它。感谢事件侦听器的建议建议。我认为这会很好。看起来我会像映射其他域对象一样映射它。