数据库更改,向后兼容性,实体框架

时间:2013-11-27 10:13:14

标签: c# database entity-framework backwards-compatibility

我的上下文:C#,EF,SQL Server 2012。

有两个独立的应用程序(服务),我们称之为X和Y.

  • 服务X =用于我们的外部客户与我们的产品通信的Web服务API。
  • 服务Y =我们使用谷歌API进行通信的Youtube服务。

X& Y单独运行,没有通信,但是他们可以访问同一个数据库。

示例:外部客户端使用X api提供数据。它存储在数据库中。 Y服务查看数据库和进程(在youtube频道上传/同步视频。)

现在业务决定:需要添加额外的数据。

因此需要扩展X的API。数据库需要扩展。

需要更新Y才能处理新数据。

困境是:我们有很多客户。他们都有自己的数据库。我们不想更新他们所有的数据库。

我们没有服务Y的多个版本。所以他们都将获得新版本的服务Y.

因此,服务Y必须同时使用OLD和NEW版本的数据库。

服务X只会在数据库更新时更新...所以没有问题。

服务Y使用实体框架,(不生成代码)。

如何确保服务Y在两种情况下均有效?:

  • OLD:数据库中不存在列。
  • 新:数据库中存在列。

任何人有任何想法????

1 个答案:

答案 0 :(得分:0)

案例新:这不应该是

的问题
  

新版服务Y

和新数据库。

Case OLD:由于映射错误,导致向后兼容性问题的原因是EF崩溃。一种选择是基于旧的数据库结构重建模型,并将其保存在类库中,准备将其放入Y.另一种方法是代码优先方法。

更进一步阅读:

Backwards compatibility when data store changes

on code-first