0

设置

  • 我有一个使用服务器上的实体框架访问的 SQL Server 2008 数据库。
  • 每个客户端都有一个 SQL Server Compact Edition 3.5 数据库,用于在脱机时存储数据。
  • 我使用从服务器定义的实体框架生成的自我跟踪实体。

问题

目前我定义了两个 EDMX,一个用于服务器,另一个用于客户端,尽管它们除了存储提供程序之外是相同的。我使用来自服务器的自我跟踪实体,它们与客户端数据库配合良好。有没有办法只拥有一个 EDMX?目前,我可能会对一个 EDMX 进行更改而忘记更改另一个。还是我使用了错误的方法?

笔记

我不想使用同步框架,因为需要在服务器端应用复杂的业务逻辑。

4

1 回答 1

1

不幸的是,没有直接的方法可以将单个 EDMX 与多个存储提供商一起使用。您必须始终为每个提供商提供单独的 SSDL 部分。常见的解决方法是将 SSDL、MSL 和 CSDL 作为单独的文件导出(默认设置将它们作为资源添加到程序集)并使用一些脚本或预构建操作来创建 SSDL 文件的副本,其中包含第二个提供者的所有必要更改(可以有SQL Server 和 SQL Server CE 之间的数据类型也不同)。您将通过在连接字符串中指定每个应用程序来使用正确的 SSDL 文件。

另一个“更好”的解决方案是不使用 EDMX,而是在这个问题大多不存在的情况下首先使用代码 - 但这是架构更改。

于 2012-07-10T08:40:52.520 回答