Entity framework 实体框架6和SQL Server Compact 4.0

Entity framework 实体框架6和SQL Server Compact 4.0,entity-framework,sql-server-ce,Entity Framework,Sql Server Ce,我(仍然)在努力学习在线视频教程,学习如何使用实体框架和代码优先的方法。就我的EDM验证而言,我很好,是时候实际构建数据库了。讲师使用SQL Server,显然,当对DbContext对象执行第一个查询命令(ToList())时,会自动创建数据库 由于我计划在未来的应用程序中使用基于SQL Server Compact文件的数据库,我尝试使用SQL Server Compact 4.0重现本教程的示例。我安装了NuGet软件包“EntityFramework.SqlServerCompact”和

我(仍然)在努力学习在线视频教程,学习如何使用实体框架和代码优先的方法。就我的EDM验证而言,我很好,是时候实际构建数据库了。讲师使用SQL Server,显然,当对DbContext对象执行第一个查询命令(
ToList()
)时,会自动创建数据库

由于我计划在未来的应用程序中使用基于SQL Server Compact文件的数据库,我尝试使用SQL Server Compact 4.0重现本教程的示例。我安装了NuGet软件包“EntityFramework.SqlServerCompact”和“MicrosoftSQLServerCompactEdition”。显然,这会导致
app.config
中出现一个新的提供者条目:

<providers>
  <provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" />
</providers>

但是当我运行第一个查询命令时,我得到了错误消息

已为上下文“DataModelContext”启用迁移,但数据库不存在或不包含映射表。使用迁移创建数据库及其表,例如从Package Manager控制台运行“Update database”命令

当我运行
updatedatabase
时,我收到以下消息:

没有挂起的显式迁移。
应用自动迁移:201310311356014_自动迁移。
运行种子法

并且没有创建数据库,至少程序仍然会退出,并显示上述错误消息


EF不会自动创建SQL Server CE数据库吗?如果是这样,如何将手动创建的DB与我的应用程序连接?

可以通过在
-标记末尾的app.config-file中手动添加连接字符串来解决此问题:

  <connectionStrings>
    <add name="DataModelContext"
         providerName="System.Data.SqlServerCe.4.0"
         connectionString="Data Source=C:\Users\sblxxx\Documents\Visual Studio 2012\Projects\Pluralsight\EF5\CodeFirst\db\cfdb.sdf"/>
  </connectionStrings>


您更改了连接字符串吗?我只是来这里写下,在我手动添加了连接字符串之后,它现在可以工作了,所以您完全正确。手动将连接字符串添加到app.config是否正确?(以前没有连接字符串)。是的,因为没有连接字符串,它不是使用真正的SqlServer,而是使用MSSqlServer的内置SqlLite版本。请给自己写一个答案并接受它,这样这个问题就不会永远打开。我立即尝试了,但是由于我的名声不好,我必须再等至少八个小时才能回答我自己的问题。嗨,我也有同样的问题。如何解决数据源中的相对路径问题?我解释我自己?我解决它,我必须使用“数据源='DataDirectory'\databasename.sdf”。