【问题标题】:NHibernate - SchemaExport, SchemaUpdate not creating database/schemaNHibernate - SchemaExport,SchemaUpdate 不创建数据库/模式
【发布时间】:2016-05-18 22:02:34
【问题描述】:

我是 NHibernate 和 Fluent NHibernate 的新手。我想要实现的是选择适当的数据库提供程序并单击一个按钮,如果不存在则生成数据库并创建所有表、关系等。

在上面描述的开头我遇到了一个问题。即,以下代码没有创建数据库 - 作为回报,我收到了一个错误。 同样的情况对于 NHibernate with xml 和 Fluent NHibernate。 如果数据库是我手动创建的,代码工作正常,表就创建好了。但如果它不存在,则不存在。

这里是 NHibernate 和 xml 方法:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="dialect">NHibernate.Dialect.MsSql2012Dialect</property>
    <property name="connection.driver_class">NHibernate.Driver.Sql2012ClientDriver</property>
    <property name="connection.connection_string">Server=.\SQLEXPRESS;Database=databaseName;Initial Catalog=databaseName;User id=user;password=xxx</property>
    <property name="show_sql">true</property>
    <property name="hbm2ddl.auto">create</property>
  </session-factory>
</hibernate-configuration>

这是 Fluent NHibernate 方法:

_sessionFactory = Fluently.Configure()
                        .Database(MsSqlConfiguration.MsSql2012
                        .ConnectionString(@"Server=.\SQLEXPRESS;Database=databaseName;Initial Catalog=databaseName;User id=user;password=xxx")
                        .ShowSql())
                        .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Entry>())
                        .ExposeConfiguration(cfg => new SchemaExport(cfg).Create(true, true)) 
                        .BuildSessionFactory();

所有评论的方法(SchemaUpdate 和添加属性)都没有给出任何积极的结果。我仍然收到以下错误:

Cannot open database "databaseName" requested by the login. The login failed.Login failed for user 'user'.

我已经为 MSSQL Express 2012 和 Visual Studio 2015 中的 localdb 尝试过这个。 我知道最后我应该使用 SchemaUpdate 来不丢失数据,但对于开发我可以使用任何尝试过的方法。

我希望有可能在此解决方案中支持以下数据库: MSSQL、甲骨文、MySQL、PostgreSQL。

请指教我做错了什么。 谢谢。

【问题讨论】:

    标签: c# nhibernate fluent-nhibernate


    【解决方案1】:

    SchemaExport 不会创建数据库。它只创建表和其他数据库对象。

    创建数据库通常需要大量配置并且需要更多权限。这些可能是它从未作为 SchemaExport 的一部分实现的原因。

    【讨论】:

    • 感谢 Stefan 提供信息。我认为 EF 中有类似于代码优先解决方案的东西。
    猜你喜欢
    • 2013-05-22
    • 2011-08-31
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    相关资源
    最近更新 更多