【问题标题】:Database changes, backward compatibility , Entity Framework数据库更改、向后兼容性、实体框架
【发布时间】:2013-11-27 10:13:14
【问题描述】:

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

有 2 个独立的应用程序(服务),我们称它们为 X 和 Y。

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

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

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

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

所以 X 的 API 需要扩展。并且数据库需要扩展。

Y 需要更新以处理新数据。

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

我们没有多个版本的服务Y。所以他们都会得到新版本的服务Y。

所以服务 Y 必须同时使用 OLD 和 NEW 版本的数据库。

Service X 只会更新,当数据库更新时...所以没有问题。

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

我如何确保服务 Y 在这两种情况下都能正常工作?:

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

有人有什么想法吗????

【问题讨论】:

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


【解决方案1】:

新案例:这应该不是问题

新版服务Y

和新的数据库。

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

进一步阅读:

Backwards compatibility when data store changes

on code-first

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    • 1970-01-01
    • 2015-09-21
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    相关资源
    最近更新 更多