2017-10-25 8 views
0

app.configの追加パラメータを、データベースを作成するディレクトリを反映するように設定するにはどうすればよいですか?この投稿 "EF 5 + SQL Server CE 4: How to specify custom location for database file?"はプログラムによって行いますが、.configファイルにパラメータを設定したいとします。エンティティの追加パラメータを設定するフレームワーク| defaultConnectionFactory for SqlServerCe.3.5

これは私が何をしようとしたものですが、それは仕事の取得に失敗しました:

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework"> 
    <parameters> 
     <parameter value="System.Data.SqlServerCe.3.5" /> 
     <parameter value="" /> 
     <parameter value="C:\\Users\\ericq\\Documents\\Data" /> 
    </parameters> 
</defaultConnectionFactory> 

がさえてみました:

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework"> 
    <parameters> 
     <parameter value="System.Data.SqlServerCe.3.5" /> 
     <parameter value="data source=C:\\Users\\ericq\\Documents\\Data" /> 
    </parameters> 
</defaultConnectionFactory> 

と:

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework"> 
    <parameters> 
     <parameter value="System.Data.SqlServerCe.3.5" /> 
     <parameter value="data source=C:\Users\ericq\Documents\Data" /> 
    </parameters> 
</defaultConnectionFactory> 

そして、できませんMSDNでの例を見つける "SqlCeConnectionFactory Constructor (String, String, String)"

だから私はあなたがこの作品を作るために3つのパラメータを必要とすると仮定していますが、私は仕事にこれを取得する方法を見つけ出すためにそれを使用しようとして私のフォーマットはLINQPad5に応じて動作していない:の

ArgumentExceptionがフォーマット

:私はこれを行うとき

using (var db = new BloggingContext()) 
{ 
    Blog mMenu = (from p in db.Blogs where p.Name.Equals("Eric Miller") select p).FirstOrDefault(); 

    if (mMenu == null) 
    { 
     // Create and save a new Blog 
     var name = "Eric Miller"; 
     var blog = new Blog { Name = name }; 
     db.Blogs.Add(blog); 
     db.SaveChanges(); 
    } 

    // Display all Blogs from the database 
    var query = from b in db.Blogs 
       orderby b.Name 
       select b; 

    Console.WriteLine("All blogs in the database:"); 

    foreach (var item in query) 
    { 
     Console.WriteLine(item.Name); 
    } 
} 

を、例外がトリガされます。初期化文字列は、私が使用している43

コードインデックスで始まる仕様に準拠していません

Blog mMenu = (from p in db.Blogs where p.Name.Equals("Eric Miller") select p).FirstOrDefault(); 

LINQPad5 App.configファイル(私はそれにそれを入力してみましょう:)

<configuration> 
    <configSections> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </configSections> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7" /> 
    </startup> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="System.Data.SqlServerCe.3.5" /> 
     <parameter value="" /> 
     <parameter value="C:\\Users\\ericq\\Documents\\Data" /> 
     </parameters> 
    </defaultConnectionFactory> 
    <providers> 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
     <provider invariantName="System.Data.SqlServerCe.3.5" type="System.Data.Entity.SqlServerCompact.Legacy.SqlCeProviderServices, EntityFramework.SqlServerCompact.Legacy" /> 
    </providers> 
    </entityFramework> 
    <system.data> 
    <DbProviderFactories> 
     <remove invariant="System.Data.SqlServerCe.3.5" /> 
     <add name="Microsoft SQL Server Compact Data Provider 3.5" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" /> 
    </DbProviderFactories> 
    </system.data> 
</configuration> 

おかげで...

答えて

0

ちょうどあなたのコンテキストと同じ名前で、あなたの設定できるように、ConnectionStringを追加します!

<connectionStrings> 
    <add name="BloggingContext" 
    providerName="System.Data.SqlServerCe.3.5" 
    connectionString="data source=C:\data\eric.sdf;" /> 
</connectionStrings> 
+0

ありがとうございます。要約すると、メインデータベースにはconnectionConnectionoryを使用し、他のデータベースにはconnectionStringsを使用したいと思いますが、これはデータベースを右に移動する唯一の方法です? – VcDeveloper

関連する問題