2016-05-18 7 views
0

私はNHibernateとFluent NHibernateの両方で新しいです。達成したいのは、適切なデータベースプロバイダを選択してボタンをクリックし、存在しない場合はデータベースを生成し、すべてのテーブル、リレーションシップなどを作成することです。NHibernate - SchemaUpdateスキーマ更新がデータベース/スキーマを作成していません

上記の冒頭で私は問題に直面しました。つまり、次のコードはデータベースを作成していません。戻り値としてエラーが発生しています。 同じ状況は、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> 

そしてここでは、流暢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'. 

私は最終的に私は、私はデータを失うことはないため、しかし、開発にSchemaUpdateを使用する必要があることを認識していますのVisual Studioでの両方MSSQLエクスプレス2012 localdbのため2015年 これを試してみました試したアプローチのいずれかを使用することができます。

このソリューションでは、次のデータベースをサポートしたいと考えています。 MSSQL、Oracle、MySQL、PostgreSQL

私が間違っていることをアドバイスしてください。おかげさまで

答えて

1

SchemaExportはデータベースを作成しません。これは、テーブルおよび他のデータベースオブジェクトを作成するだけです。

データベースの作成は、通常、構成が集中しており、より多くのアクセス許可が必要です。これらが、SchemaExportの一部として実装されたことがなかった理由かもしれません。

+0

おかげさまでStefanにお問い合わせください。私はEFで利用可能なコードの最初の解決策に似た何かがあると思った。 – kbysiec

関連する問題