Entity framework 如何在代码优先方法中自动生成SDF

Entity framework 如何在代码优先方法中自动生成SDF,entity-framework,ef-code-first,sql-server-ce,Entity Framework,Ef Code First,Sql Server Ce,我已经创建了一个POCO和一个上下文,并从NuGet(v4.3.1)中将EF添加到我的项目中。与我已经习惯的相比,app.config对我来说有点新。它有以下部分: <entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> <parameters> <!-

我已经创建了一个POCO和一个上下文,并从NuGet(v4.3.1)中将EF添加到我的项目中。与我已经习惯的相比,app.config对我来说有点新。它有以下部分:

<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
  <parameters>
    <!--<parameter value="Data Source=|DataDirectory|Test.sdf; Integrated Security=True; MultipleActiveResultSets=True" />-->
  </parameters>
</defaultConnectionFactory>

我已经注释掉了“参数”,并在顶部的标记下添加了一个连接字符串片段,如下所示:

<connectionStrings>
  <add name="CodeFirstExampleContext" connectionString="Data Source=|DataDirectory|Test.sdf;Initial Catalog=CodeFirstExample;integrated security=True" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>

以前使用的连接字符串类似于SQL CE数据库将自动生成的字符串。然而,它现在没有这样做。相反,我得到了以下异常:

“从数据库获取提供程序信息时出错。这可能是由于实体框架使用了不正确的连接字符串造成的。有关详细信息,请检查内部异常,并确保连接字符串正确。”

内部例外是:

“提供程序未返回ProviderManifestToken字符串。”

以下是我的POCO和上下文类型:

class Person
{
    [Key]
    public int Id { get; set; }
    public string FName { get; set; }
    public string LName { get; set; }
    public int Age { get; set; }
}


class Context:DbContext
{
    public DbSet<Person> People { get; set; }
}
班级人员
{
[关键]
公共int Id{get;set;}
公共字符串FName{get;set;}
公共字符串LName{get;set;}
公共整数{get;set;}
}
类上下文:DbContext
{
公共数据库集人物{get;set;}
}
我是不是遗漏了什么


提前谢谢

将连接字符串更改为:

<connectionStrings> 
  <add name="Context" connectionString="Data Source=|DataDirectory|\Test.sdf"
    providerName="System.Data.SqlServerCe.4.0" /> 
</connectionStrings>

并更改默认连接工厂:

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
  <parameters>
    <parameter value="System.Data.SqlServerCe.4.0" />
  </parameters>
</defaultConnectionFactory>


不幸的是,这也不起作用。我以前确实试过。我注意到,如果我尝试将新的“数据库文件”添加到项目中并选择SQL Server CE作为源,则会生成这种格式。名称必须与DbContext的全名匹配,或者在DbContext构造函数中使用name=CodeFirstExampleContext-请参阅