C# 如何先对代码和WebAPI进行版本设置?

C# 如何先对代码和WebAPI进行版本设置?,c#,entity-framework,asp.net-web-api,versioning,C#,Entity Framework,Asp.net Web Api,Versioning,我使用实体框架构建实体框架代码优先数据库: 我还将通过对url进行版本控制来实现这一点: config.Routes.MapHttpRoute( name: "DefaultApiWithAction", routeTemplate: "api/v1/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); 然后我实现了一个“su

我使用实体框架构建实体框架代码优先数据库:

我还将通过对url进行版本控制来实现这一点:

    config.Routes.MapHttpRoute(
        name: "DefaultApiWithAction",
        routeTemplate: "api/v1/{controller}/{action}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
然后我实现了一个“super duper not Backward compatible”(超级复制程序不向后兼容)函数,因此我需要更改我的备份上下文,并在我的WebAPI中加入一些业务逻辑:

我更新url路由上的版本:

    config.Routes.MapHttpRoute(
        name: "DefaultApiWithAction",
        routeTemplate: "api/v2/{controller}/{action}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
问题:版本1不再工作。它将触发一个错误,声明“
支持“xyzContext”上下文的模型自数据库创建以来已更改。


我如何处理此方案,以允许无法更新到版本2的客户端向后兼容?

要使v2方案正常工作,必须使用如下路由模板:

"api/{v2}/{controller}/{id}"

此错误与路由无关,但它表明您的型号已更改。例如,您在
Person
类中添加了
Address
属性。您可以使用保持数据库与模型同步

谢谢你,这是一本有趣的书。我认为此方法取消了“支持“xyzContext”上下文的模型自数据库创建以来已发生更改。”错误?database.SetInitializer(null)//尝试将其添加到Globel.asax文件中