Vir*_*oid 3 mapping nhibernate schema nhibernate-mapping
我正在使用NHibernate主要针对MSSQL数据库,我在那里使用MSSQL模式用于各种表.
在我的NH映射(HBM)文件中,我已为映射中的每个表指定了模式,如下所示:
<?xml version="1.0"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
auto-import="true"
schema="xyz"> <!-- schema specified -->
<class name="Customer">
<id name="Id">
<generator class="native" />
</id>
<property name="Name" />
</class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)
对于我的单元测试,我一直在尝试SQLite,但是我的映射现在失败了,因为NH报告无法找到数据库"xyz".
我理解模式的解释存在差异,那么NH的解释/实现是什么,使用模式时最好的方法是什么?
顺便说一句:使用像"nhibernate数据库模式"这样的关键字搜索网络并没有产生任何相关的东西.
"标准"解释是表有一个由三部分组成的名称:"CATALOG.SCHEMA.TABLE":这些是标准(ISO-SQL标准?)"information_schema"视图中使用的名称.Hibernate(可能也是NHibernate)遵循此约定,您可以在类映射中指定目录和模式,并在配置中指定default_catalog和default_schema.
在我自己的单元测试环境中(使用Hypersonic),我在构建SessionFactory之前对Hibernate配置进行了按摩:我自己做了这样的事情,比如设置HSQL兼容的IdentifierGenerators,但是你可以通过清除映射类的模式属性.
一般来说,我试图避免在应用程序中指定模式和目录.在Oracle中,我通常创建同义词,以便用户在自己的命名空间中看到对象; 在PostgreSQL中,在数据库配置中设置search_path; 在SQL Server中,将所有表放入'dbo'.