12

我(仍在)尝试关注有关如何通过代码优先方法使用实体框架的在线视频教程。我的 EDM 验证良好,是时候实际构建数据库了。讲师使用 SQL Server,显然数据库是在ToList()针对 DbContext 对象的第一个查询命令 () 时自动创建的。

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

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

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

为上下文“DataModelContext”启用了迁移,但数据库不存在或不包含映射表。使用迁移来创建数据库及其表,例如通过从包管理器控制台运行“更新数据库”命令。

当我运行时,Update-Database我收到消息:

没有未决的显式迁移。
应用自动迁移:201310311356014_AutomaticMigration。
运行种子方法。

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

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

4

1 回答 1

13

<configuration>该问题可以通过在-tag末尾手动添加连接字符串到 app.config 文件来解决:

  <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>
于 2013-11-01T08:01:29.757 回答