c# - 如何在 Entity Framework 4 中切换 SQL 和 SQL CE?或者如何以编程方式更改 edmx 文件中的 "Schema Namespace"

标签 c# entity-framework entity-framework-4 edmx

在 Entity Framework 4 上使用模型优先方法,我想将数据库从真正的 SQL (Data.SQLClient) 来回切换到 SQL CE (Data.ServerCe)。

我知道如何手动完成:

将提供程序从 System.Data.SqlServerCe.3.5 更改为 System.Data.SqlClient

  1. 更改模型容器/上下文的连接字符串
  2. 更改 .edmx 文件(Schema Namespace="Model1.Store"provider="..."属性)

我想不通的是如何在构建/编译时进行更改,以便我可以根据配置轻松地在 SQLClient 和 SQLServerCE 之间切换。

任何其他如何获得相同结果的方法也将不胜感激! (有一个模型,数据源可以在SQL和SQL CE之间切换)

最佳答案

我不知道在这种情况下这是否是最适合您的方法,但我只想确保您知道这种解决问题的方法。

您可以(右)单击 edmx 的设计器 View (而不是解决方案资源管理器中的文件)并单击“属性”,在 PropertyGrid 中查找“元数据工件处理”并将值从“嵌入输出程序集”到“复制到输出目录”。

但是,一旦您更改了此设置,您将注意到输出目录中有三个基于 XML 的文件(MyModel.ssdl、MyModel.csdl、MyModel.msl),而不是将 edmx 嵌入到程序集中。

您现在可以自由地将对这些文件的任何更改编写为构建过程的一部分。

还要确保将连接字符串更改为如下内容:

<add name="MyEntities" connectionString="metadata=.\MyModel.csdl|.\MyModel.ssdl|.\MyModel.msl; (..) />

正如我所说,我不确定这是否是解决您的特定问题的最佳方法。但是,我使用它为不同的数据库模式生成不同的构建。它有效。

关于c# - 如何在 Entity Framework 4 中切换 SQL 和 SQL CE?或者如何以编程方式更改 edmx 文件中的 "Schema Namespace",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5579918/

相关文章:

c# - 从 ObjectContext 转换为 DBContext

c# - Winforms 方法/事件过滤器属性

c# - 在 c# 中替代 switch 语句调用方法

entity-framework - Entity Framework 4 POCO如何更新实体?

c# - EF4审计多对多关系的变化

c# - 在 Unity 中验证没有联合的 Cognito 用户

linq - 您如何查询对象集并在同一查询中过滤附加的实体集合?

entity-framework - Entity Framework 4.0 : Why Would One Use the Code Generated EntityObjects Over POCO Objects?

c# - 当我选择添加 Controller 时,为什么下拉列表中缺少我的数据上下文类?

c# - EF 5 - 传递的主键值的数量必须与实体上定义的主键值的数量相匹配