小编taf*_*b76的帖子

带有SQL Server Compact 4.0的实体框架6

我(仍然)正在尝试关注如何使用实体框架和代码优先方法的在线视频教程.我的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数据库吗?如果是这样,我如何将手动创建的数据库与我的应用程序连接?

entity-framework sql-server-ce

12
推荐指数
1
解决办法
1万
查看次数

使用"通用值"将对象强制转换为KeyValuePair?

我有一个ComboBox,里面装满了两种不同类型的混合物品.类型是

KeyValuePair<Int32, FontFamily>
Run Code Online (Sandbox Code Playgroud)

要么

KeyValuePair<Int32, String>
Run Code Online (Sandbox Code Playgroud)

现在有些时候我只对所选项目的Key感兴趣,它始终是Int32.

访问所选项目的密钥最简单的方法是什么?我在想类似的东西

Int32 key = ((KeyValuepair<Int32, object/T/var/IdontCare>)combobox.SelectedItem).Key;
Run Code Online (Sandbox Code Playgroud)

但那不起作用.

所以我只有

    Int32 key;
    if(combobox.SelectedItem.GetType().Equals(typeof(KeyValuePair<Int32, FontFamily)))
    {
        key = ((KeyValuePair<Int32, FontFamily)combobox.SelectedItem).Key;
    }
    else if(combobox.SelectedItem.GetType().Equals(typeof(KeyValuePair<Int32, String)))
    {
        key = ((KeyValuePair<Int32, String)combobox.SelectedItem).Key;
    }
Run Code Online (Sandbox Code Playgroud)

哪个有效,但我想知道是否有更优雅的方式?

c# casting keyvaluepair

2
推荐指数
1
解决办法
4062
查看次数