10

SQl Compact 4.0 を使用して、コード ファーストの EF プロジェクトを試しています。プロジェクトを実行しようとすると、「データベース 'master' で CREATE DATABASE 権限が拒否されました。」というエラーが表示されます。

私はヘルプを検索し、いくつかのブログに応じて、使用されている接続文字列を特定しようとしました。驚いたことに、それは

context.Database.Connection.ConnectionString    "Data Source=.\\SQLEXPRESS;Initial Catalog=Ancestors.Models.AncestorsContext;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFrameworkMUE"    string

私のweb.configファイルには次のセクションが含まれていますが...

<connectionStrings>
    <add name="DefaultConnection" providerName="System.Data.SqlServerCe.4.0"    connectionString="Data Source=|DataDirectory|\aspnet-Ancestors-20121012114712.sdf" /> 
</connectionStrings>

<system.data>
<DbProviderFactories>
  <remove invariant="System.Data.SqlServerCe.4.0" />
  <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
</DbProviderFactories>
</system.data>

EF が SQL Compact ではなく SQLEXPRESS への接続を作成することを主張している理由を知っている人はいますか? ソリューションのどこにも SQLEXPRESS への参照が見つかりません。

4

3 に答える 3

2

web.Configのセクションを探し<entityFramework>てください。デフォルトの接続ファクトリがそこにあるはずです。

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="Data Source=.\SQLEXPRESS; Integrated Security=True; MultipleActiveResultSets=True"/>
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>

コード ファースト プロジェクトを実行している場合は、既定のコンストラクターを変更して、他の接続文字列を使用することもできます。

public YourContext() : base("name=DefaultConnection")
{

}
于 2012-10-12T14:43:49.633 に答える