【发布时间】:2014-08-16 09:06:37
【问题描述】:
我有一个将逐步构建的项目。
该项目是一个桌面应用程序,带有实体框架和包,如下所示:
实体框架 + DAL -> 应用程序 + 逻辑等
1.0 版有 2 个对象:
- 博客
- 发布
所以我把它打包并发送给我的客户,他想要一些改变,我在整个系统上取得了进一步的进展。
2.0 版现在有 3 个对象:
- 博客
- 发布
- 用户
使用 Entity Framework,数据库架构不再匹配 V1.0,因此第一个版本现在已失效并引发错误。我希望我的客户仍然能够使用 1.0 版。我如何/应该如何构建我的应用程序以允许继续使用 V1?
为 EnglishBob 编辑:
我希望我的客户仍然能够使用 V1。假设他有一个测试部门,他们需要能够使用他们的 LIVE DB,或者他难以有效地跨部门扩展应用程序,因此必须同时运行 v1 和 v2。
【问题讨论】:
-
这将是非常困难的。众所周知,ORM 不能很好地处理架构更改。
-
我知道这一点,但肯定有一些人尝试过并且失败/成功了,我想知道如何。 IE。它们之间的层具有始终最新的 API,或者运行 EF 的方式忽略更新的更改。
-
你可以做什么:1.先使用代码,在继承链中构建一个差异上下文链,2.在加载时确定db版本并加载正确的上下文
-
如果您的架构更改仅限于添加表,这是最简单的。对于实体级别的更改,您还需要处理空字段。
-
oop继承的中心思想是处理版本控制
标签: c# entity-framework versioning