Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net web api 在web API中处理数据契约更改的最佳实践_Asp.net Web Api_Datacontract - Fatal编程技术网

Asp.net web api 在web API中处理数据契约更改的最佳实践

Asp.net web api 在web API中处理数据契约更改的最佳实践,asp.net-web-api,datacontract,Asp.net Web Api,Datacontract,假设我的web API中有我的car对象,如下所示: [DataContract(Name = "Car")] public class Car { [DataMember] private string Model; } 然后在web API运行一段时间后,我想在car对象中再添加一个字段,如: [DataContract(Name = "Car")] public class Car { [DataMember] private string Model;

假设我的web API中有我的car对象,如下所示:

[DataContract(Name = "Car")]
public class Car
{
    [DataMember]
    private string Model;
}
然后在web API运行一段时间后,我想在car对象中再添加一个字段,如:

[DataContract(Name = "Car")]
public class Car
{
    [DataMember]
    private string Model;

    [DataMember]
    private int HorsePower;
}
但它有时会导致原始客户端中断。我在互联网上搜索过,发现使用API版本和数据契约版本可以解决这个问题,通过下面的类定义,我可以让我的新版本API在新版本数据契约上运行

[DataContract(Name = "Car")]
public class CarV1
{
    [DataMember]
    private string Model;
}

[DataContract(Name = "Car")]
public class CarV2
{
    [DataMember]
    private string Model;

    [DataMember]
    private int HorsePower;
}
但这似乎不是一个非常灵活的方法,如果数据契约发展很多,我的代码中会有很多冗余,而且很难跟踪这么多版本

有没有更好的方法来处理这个问题