如何在调用REST服务时忽略用[IgnoreDataMember]标记的属性

时间:2015-06-19 10:28:29

标签: rest asp.net-mvc-5 entity-framework-6 datacontractserializer

我正在使用REST Xml服务。

我有所有必要的类来执行此操作,(由编写服务的开发人员提供)但在我的结尾,我必须保存一些对数据库的响应,以执行我正在编写的应用程序的任务。 所以我已经标记了我需要将这些类放入DB中作为部分并扩展它们以便我可以从DbEntity类继承,该类指定了ID属性,因此我可以使用EF将它们保存到DB中:

public interface IDbEntity
{
    int ID { get; set; }
}

[Serializable]
public class DbEntity : IDbEntity
{
    [IgnoreDataMember]
    [XmlIgnore]
    public int ID { get; set; }
}

我现在面临的问题是,当服务调用被反序列化时,我得到了错误

  

第1行位置113的错误。'Element''来自命名空间''的'ElementName'不是预期的。期待元素'_x003C_ID_x003E_k__BackingField'

我只是这样打电话:

var response = await client.PostAsXmlAsync<TReq>("Some/API/Call", req);
TResp val = await msg.Content.ReadAsAsync<TResp>(response)

原始类中的所有属性都使用DataMember属性指定了Orders,并且我已明确标记了我的数据库属性,但无效。

有什么方法可以让它工作吗? - 即让DataContractSerializer实际上忽略我在去序列化时标记为要忽略的属性?

另外,这些被忽略的属性也在调用时传递给服务 - IgnoreDataMember实际上做了什么吗?

0 个答案:

没有答案