NHibernate SchemaExport.Execute 不创建 table
NHibernate SchemaExport.Execute does not create table
按照本教程学习 NHibernate Your first NHibernate based application,我已经到了你调用的地步
new SchemaExport(cfg).Execute(true, true, false);
在导出模式(创建产品 table)以验证 NHibernate 是否正确设置的测试方法中
[Test]
public void Can_generate_schema()
{
var cfg = new Configuration();
cfg.Configure();
cfg.AddAssembly(typeof(Product).Assembly);
new SchemaExport(cfg).Execute(true, true, false);
}
映射
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="MyFirstNHibernateProject" namespace="MyFirstNHibernateProject.Domain">
<class name="Product">
<id name="Id">
<generator class="guid"></generator>
</id>
<property name="Name"></property>
<property name="Category"></property>
<property name="Discontinued"></property>
</class>
</hibernate-mapping>
配置
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="dialect">NHibernate.Dialect.MsSqlCeDialect</property>
<property name="connection.driver_class">NHibernate.Driver.SqlServerCeDriver</property>
<property name="connection.connection_string">Data Source=MyFirstNHibernateProject.sdf</property>
<property name="show_sql">true</property>
</session-factory>
</hibernate-configuration>
测试通过,我什至可以看到创建 table 的输出 sql,但是 table 没有在数据库中创建(sql 服务器紧凑型) , 我在服务器资源管理器中刷新了数据库,它仍然是空的。
我查看了这些帖子
NHibernate SchemaExport not creating table
NHibernate SchemaExport does not create tables when “script” is false
NHibernate does not create Tables
但其中 none 解决了我的问题。
有什么想法吗?
我建议在连接字符串中使用完整路径:
// instead of this
<property name="connection.connection_string"
>Data Source=MyFirstNHibernateProject.sdf</property>
// we should use
<property name="connection.connection_string"
>Data Source=C:\MyFirstNHibernateProject\MyFirstNHibernateProject.sdf</property>
其中 "C:\MyFirstNHibernateProject\"
应该是 "MyFirstNHibernateProject.sdf"
的完整路径
此外,如果您起诉 CE 4.0,我建议您使用此方言:
<property name="dialect">NHibernate.Dialect.MsSqlCe40Dialect</property>
按照本教程学习 NHibernate Your first NHibernate based application,我已经到了你调用的地步
new SchemaExport(cfg).Execute(true, true, false);
在导出模式(创建产品 table)以验证 NHibernate 是否正确设置的测试方法中
[Test]
public void Can_generate_schema()
{
var cfg = new Configuration();
cfg.Configure();
cfg.AddAssembly(typeof(Product).Assembly);
new SchemaExport(cfg).Execute(true, true, false);
}
映射
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="MyFirstNHibernateProject" namespace="MyFirstNHibernateProject.Domain">
<class name="Product">
<id name="Id">
<generator class="guid"></generator>
</id>
<property name="Name"></property>
<property name="Category"></property>
<property name="Discontinued"></property>
</class>
</hibernate-mapping>
配置
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="dialect">NHibernate.Dialect.MsSqlCeDialect</property>
<property name="connection.driver_class">NHibernate.Driver.SqlServerCeDriver</property>
<property name="connection.connection_string">Data Source=MyFirstNHibernateProject.sdf</property>
<property name="show_sql">true</property>
</session-factory>
</hibernate-configuration>
测试通过,我什至可以看到创建 table 的输出 sql,但是 table 没有在数据库中创建(sql 服务器紧凑型) , 我在服务器资源管理器中刷新了数据库,它仍然是空的。
我查看了这些帖子
NHibernate SchemaExport not creating table
NHibernate SchemaExport does not create tables when “script” is false
NHibernate does not create Tables
但其中 none 解决了我的问题。
有什么想法吗?
我建议在连接字符串中使用完整路径:
// instead of this
<property name="connection.connection_string"
>Data Source=MyFirstNHibernateProject.sdf</property>
// we should use
<property name="connection.connection_string"
>Data Source=C:\MyFirstNHibernateProject\MyFirstNHibernateProject.sdf</property>
其中 "C:\MyFirstNHibernateProject\"
应该是 "MyFirstNHibernateProject.sdf"
此外,如果您起诉 CE 4.0,我建议您使用此方言:
<property name="dialect">NHibernate.Dialect.MsSqlCe40Dialect</property>