Nhibernate SQL 服务器 2016 方言

Nhibernate SQL Server 2016 dialect

我希望在 SQL Server 2016 中使用 NHibernate。

最新方言适用于 SQL Server 2012,因此将允许 SQL Server 2016 中的所有 SQL Server 2012 功能。我想知道新的 SQL Server 2016 功能可通过 NHibernate 以任何方式使用。

我主要对以下功能感兴趣:

此功能是否在最新(2017 年 2 月)版本的 NHibernate 中开箱即用?如果没有,是否有任何现成的扩展可以启用此功能?

这些功能不可用。您将需要在 JIRA 中创建工单 (https://nhibernate.jira.com) and maybe discuss them with the developers of NHibernate (https://groups.google.com/forum/#!forum/nhibernate-development)。

这些功能高度SQL-服务器相关,将在服务器端启用。这是 DBA 任务,而不是 ORM 任务(对象关系映射工具 - NHibernate 也是一个 ORM,Entity Framework。

如果您的 DBA 支持它们,请让他启用它们。 NHibernate 方面无事可做。

  • In-Memory Tables:
    您必须在创建表时将要使用内存中 OLTP 处理的表标记为内存优化。
    如果您使用 NHibernate hbm2ddl 工具来创建您的表,那么您需要更改您自己创建它们的过程。 hbm2ddl 与数据库无关,无法处理这些特定选项。
  • Transparent Data Encryption:
    这完全是 SQL 服务器问题。加密数据库文件。这对于像 NHibernate 这样的客户端软件是完全透明的。对他们没有影响。要求客户端支持仅服务器功能的功能,客户端永远不会接触到,这有点无稽之谈。
  • Row Level Security:
    同样,完全处理服务器端。同样,要求客户端支持服务器端功能有点废话。在提问之前,您是否对这些技术做了一些记录?阅读有关 Microsoft docs 的更多信息。

    The access restriction logic is located in the database tier rather than away from the data in another application tier.

在数据库中定义 filters/access 规则是您的工作(或您的 dba 工作)。这从来不是 ORM 的工作。

启用它们完全取决于您(或您的 dba),它们将正常工作,无论是 NHibernate 还是其他应用程序。