自定义NHibernate实体持久化用于修改生成的SQL语句

时间:2010-11-02 09:42:28

标签: sql nhibernate interceptor

我需要的是从DB视图填充实体(不可插入)并将所有实体更新到可更新的DB表。

  1. 将实体映射到表并从视图中编写自定义加载SQL不是一种选择,因为在某些情况下,NHibernate仍会尝试从表名中进行选择(例如,在加入此实体时)。
  2. 映射实体以查看和编写自定义数据修改查询不是一个选项,因为我无法编写跨数据库的sql-insert语句(因为最后插入的标识值选择部分)。
  3. 我现在提出的唯一想法是即时修改生成的SQL语句。我设法使用自定义拦截器,但我不认为这是一个好主意(因为我拦截每个查询,甚至其他实体)。但是,我认为应该可以使用自定义IEntityPersister仅更改所需的查询。我基于SingleTableEntityPersister创建了一个,在<class persister="…">中指定了它,但NHibernate甚至不想实例化它。

    是否有为NHibernate编写自定义实体持久性的示例?

0 个答案:

没有答案