taf*_*b76 12 entity-framework sql-server-ce
我(仍然)正在尝试关注如何使用实体框架和代码优先方法的在线视频教程.我的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>
Run Code Online (Sandbox Code Playgroud)
但是当我运行第一个查询命令时,我收到错误消息
已为上下文"DataModelContext"启用了迁移,但数据库不存在或不包含映射表.使用迁移创建数据库及其表,例如通过从程序包管理器控制台运行"Update-Database"命令.
当我跑步时,Update-Database我收到消息:
没有待定的显式迁移.
应用自动迁移:201310311356014_AutomaticMigration.
运行种子方法.
并且没有创建数据库,至少程序仍然退出上面的错误消息.
EF不会自动创建SQL Server CE数据库吗?如果是这样,我如何将手动创建的数据库与我的应用程序连接?
taf*_*b76 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>
Run Code Online (Sandbox Code Playgroud)