是否可以对 SQL Express 和 SQL Express 使用相同的实体框架模型? SQL CE 4.0?

发布于 2024-10-31 06:34:07 字数 312 浏览 0 评论 0原文

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

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

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

我正在使用 .NET 4.0、实体框架和 VS 2010 SP1

I'm currently working on a SOA project where at some locations it would make sense for the service to use a lightweight database (SQL CE 4.0) while at other locations a more robust database is desirable (SQL Express right now, but possibly scaling up to larger editions).

Even though the model and table structure is identical for both SQL Express and SQL CE, I can't figure out how to get Entity Framework to use the same EDMX to work with both databases. The conceptual model is identical for both, and the only difference in the storage model is the provider name that is used to access to the database.

Am I missing something, or do I need to keep two basically identical models around, one for each database.

I'm using .NET 4.0, Entity Framework and VS 2010 SP1

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

只是偏爱你 2024-11-07 06:34:07

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

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

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

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

Unfortunatelly I think you have to create two separate SSDLs with different provider and manually keep them in sync (this can be actually done by some post build script wich will copy ssdl file and replace a provider). Still you have to be sure that table structures are same:

  • same table names
  • same column names
  • same data types

The last point can be critical because as I know SQL CE doesn't support some types common in SQL Server. For example I think navarchar(max) and nvarbinary(max) is not supported in SQL CE.

To force EF to create SSDL file instead of including it as a resource change Metadata Artifcat Processing (in properties of EDMX designer) to Copy to output directory and modify connection string. Here is a related article.

天涯离梦残月幽梦 2024-11-07 06:34:07

如果您不介意切换到 Code First,则可以执行此操作。 Gallery Server Pro 3.0 使用 Code First 来定位 SQL CE 或 SQL Server,具体取决于根据用户的喜好。有一个代码库,唯一的区别是 web.config 中的连接字符串。

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

You can do this if you don't mind switching to Code First. Gallery Server Pro 3.0 uses Code First to target either SQL CE or SQL Server, depending on the user's preference. There is a single code base with the only difference being the connection string in web.config.

It's an open source project so you can see how it's done in the code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文