3

接続文字列に問題があります。私は多くの異なる文字列とアプローチをテストしてきましたが、今は行き詰まっています。

private static void InitializeSessionFactory()
{
    _sessionFactory = Fluently.Configure()
            .Database(MsSqlConfiguration.MsSql2008
                          .ConnectionString(
 @"Server=Data Source=.\SQLEXPRESS;DataBase=carDB.mdf;User ID=sa;Password=xxxSecretxxx;")
                          .ShowSql()
            )
            .Mappings(m =>
                      m.FluentMappings
                          .AddFromAssemblyOf<Car>())
            .ExposeConfiguration(cfg => new SchemaExport(cfg).Create(true, false))
            .BuildSessionFactory(); 
    }

(「sa」をまったく使用してはならないことはわかっています。使用した理由は、単に管理ソフトウェアが不足しているためであり、存在する唯一のアカウントを使用する必要がありました)

SQL Server Express データベースを使用しています。

私が得る例外はこれです:

SessionFactory の作成中に、無効または不完全な構成が使用されました。
詳細については、PotentialReasons コレクションと InnerException を確認してください。

これは私の内部例外です

SQL Server への接続を確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。
サーバーが見つからないか、アクセスできませんでした。
インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。
(プロバイダー: SQL ネットワーク インターフェイス、エラー: 26 - 指定されたサーバー/インスタンスの検索中にエラーが発生しました)

誰も私がこれにアプローチする方法を知っていますか? これを機能させるために何時間も費やしました。

4

2 に答える 2

4

接続文字列では、データベースファイルではなくデータベースを指定します。だからあってはならない

@"Server=Data Source=.\SQLEXPRESS;DataBase=carDB.mdf;User ID=sa;Password=xxxSecretxxx;"

しかし

@"Server=Data Source=.\SQLEXPRESS;DataBase=carDB;User ID=sa;Password=xxxSecretxxx;"

データベースが実際に名前carDBを持っていて、他のような名前を持っていない場合Cars.

また、SqlConnectionStringBuilder構文的に正しい接続文字列が保証されるため、このクラスを使用して接続文字列を作成することをお勧めします。

余談ですが、Express エディションにも管理ツール (SQL Server Express 用の SQL Server Management Studio など) をインストールできることをご存知ですか? これにより、作業がはるかに簡単になります。

于 2013-01-15T09:50:42.073 に答える
0

使用しているSQLServerのエディションが正確に明確ではありません。それはetherExpressまたはCompactです。

SQL Expressの場合は、次のことを試してください。

@"Data Source=.\SQLEXPRESS;Initial Catalog=carDB;User ID=sa;Password=********;"

SQL Compactの場合、通常、dbファイルのパスと名前を指定するのに十分です。

@"Data Source=path\\carDB.sdf;"

ただし、SQL Compactの場合、おそらく別のプロバイダーが必要ですMsSqlCeConfiguration.Standard

于 2013-01-15T06:36:41.910 に答える