我使用实体框架构建了一个Entity Framework Code First数据库:
我也会通过版本化我的网址来解决这个问题:
config.Routes.MapHttpRoute(
name: "DefaultApiWithAction",
routeTemplate: "api/v1/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
然后我实现了'super-duper-not-backwards-compatible'功能,所以我需要更改我的支持上下文并在我的WebAPI中添加一些业务逻辑:
我更新网址路由上的版本:
config.Routes.MapHttpRoute(
name: "DefaultApiWithAction",
routeTemplate: "api/v2/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
问题:版本1不再有效。它会触发一条错误,说明“The model backing the 'xyzContext' context has changed since the database was created.
”
如何以一种允许向无法更新到版本2的客户端向后兼容的方式处理此方案?
答案 0 :(得分:1)
此错误与路由无关,但它表示您的模型已更改为ex,您向Address
类添加了Person
属性。您可以使用migration使数据库与模型保持同步。
答案 1 :(得分:0)
要使v2方案有效,您必须使用如下路由模板:
"api/{v2}/{controller}/{id}"