【问题标题】:Nhibernate - Map a single row tableNhibernate - 映射单行表
【发布时间】:2011-03-23 15:03:52
【问题描述】:

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

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

2) 这个类的映射会不同于我的其他“普通”类吗?

【问题讨论】:

    标签: nhibernate mapping


    【解决方案1】:

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

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

    回答 2)我假设该表没有主键(因为它是表中唯一的行)。据我所知,NHibernate 不能与没有主键的实体一起使用。您可能必须添加一个主键才能使其适用于 NHibernate

    【讨论】:

    • 感谢事件监听器的建议。我认为这会很好。看起来我要像其他任何域对象一样映射它。
    猜你喜欢
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    相关资源
    最近更新 更多