Nhibernate SQL Server 2016方言

时间:2017-07-11 11:25:01

标签: c# sql-server nhibernate fluent-nhibernate

我希望将NHibernate与SQL Server 2016一起使用。

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

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

  • 内存表
  • 透明数据加密
  • 行级安全性

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

2 个答案:

答案 0 :(得分:1)

这些功能高度依赖于SQL Server,并且将在服务器端启用。这是一个DBA任务,而不是ORM任务(对象关系映射工具 -  NHibernate也是一个ORM,实体框架。

如果您的DBA支持他们,请让他启用它们。在NHibernate方面没有什么可做的。

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

    访问限制逻辑位于数据库层中,而不是远离另一个应用程序层中的数据。

在数据库中定义过滤器/访问规则是您的工作(或您的dba工作)。这从来就不是ORM的工作。

完全取决于你(或你的dba)启用它们,无论应用程序如何,它们都能正常工作,无论是NHibernate还是其他东西。

答案 1 :(得分:0)

这些功能不可用。您需要在JIRA(https://nhibernate.jira.com)中创建票证,并且可以与NHibernate的开发人员(https://groups.google.com/forum/#!forum/nhibernate-development)讨论这些票证。