实体框架连接到SQLEXPRESS而不是SQL Compact

Ton*_*ter 10 sql-server entity-framework

我一直在用SQl Compact 4.0尝试代码第一个EF项目.当我尝试运行项目时,出现"在数据库'master'中创建数据库权限被拒绝的错误.".

我搜索了一些帮助,并回应了一些博客试图找出正在使用的连接字符串.令我惊讶的是

context.Database.Connection.ConnectionString    "Data Source=.\\SQLEXPRESS;Initial Catalog=Ancestors.Models.AncestorsContext;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFrameworkMUE"    string
Run Code Online (Sandbox Code Playgroud)

即使我的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>
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么EF坚持创建与SQLEXPRESS而不是SQL Compact的连接?在解决方案的任何地方,我都找不到SQLEXPRESS的任何参考.

Mar*_*eta 2

查找<entityFramework>web.Config 中的部分,其中应该有您的默认连接工厂:

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="Data Source=.\SQLEXPRESS; Integrated Security=True; MultipleActiveResultSets=True"/>
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>
Run Code Online (Sandbox Code Playgroud)

如果您正在执行代码优先项目,您还可以更改默认构造函数以使用其他连接字符串:

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

}
Run Code Online (Sandbox Code Playgroud)