【问题标题】:Is it possible to use the same Entity Framework model for both SQL Express & SQL CE 4.0?是否可以为 SQL Express 和 SQL CE 4.0 使用相同的实体框架模型?
【发布时间】:2011-04-08 20:01:10
【问题描述】:

我目前正在从事一个 SOA 项目,在该项目中,在某些地方,服务使用轻量级数据库 (SQL CE 4.0) 是有意义的,而在其他地方则需要更强大的数据库(目前是 SQL Express,但是可能会扩展到更大的版本)。

尽管 SQL Express 和 SQL CE 的模型和表结构相同,但我无法弄清楚如何让 Entity Framework 使用相同的 EDMX 来处理这两个数据库。两者的概念模型相同,存储模型的唯一区别是用于访问数据库的提供程序名称。

我是否遗漏了什么,或者我需要保留两个基本相同的模型,每个数据库一个。

我正在使用 .NET 4.0、Entity Framework 和 VS 2010 SP1

【问题讨论】:

    标签: sql-server entity-framework entity-framework-4 sql-server-ce-4


    【解决方案1】:

    不幸的是,我认为您必须使用不同的提供程序创建两个单独的 SSDL,并手动使它们保持同步(这实际上可以通过一些构建后的脚本来完成,该脚本将复制 ssdl 文件并替换提供程序)。您仍然必须确保表结构相同:

    • 表名相同
    • 列名相同
    • 相同的数据类型

    最后一点可能很关键,因为我知道 SQL CE 不支持 SQL Server 中常见的某些类型。例如,我认为 SQL CE 不支持 navarchar(max)nvarbinary(max)

    强制 EF 创建 SSDL 文件而不是将其作为资源更改元数据 Artifcat 处理(在 EDMX 设计器的属性中)以复制到输出目录并修改连接字符串。 Here 是相关文章。

    【讨论】:

      【解决方案2】:

      如果您不介意切换到 Code First,您可以这样做。 Gallery Server Pro 3.0 使用 Code First 来定位 SQL CE 或 SQL Server,具体取决于用户的偏好。有一个单一的代码库,唯一的区别是 web.config 中的连接字符串。

      这是一个开源项目,因此您可以在代码中看到它是如何完成的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多