オブジェクトの順序化後、一部の属性が理由なく消失する解決方法
2922 ワード
オブジェクトの順序化後、一部の属性が無断で消失しました.
プロジェクトにWebServiceの引用を追加しました.パラメータを組み合わせてサーバに提出したら、オブジェクトの中にいくつかの属性値が足りなくなりました.問題の所在を明らかにするために、コードを使って提出したパラメータをxml文字列に順列化しましたが、やはりいくつかの属性が足りないことが分かりました.どうしてこのようにして、属性は明らかに価値を与えて、どのように序列化した後になくなったのですか?あれこれと思い余って、気がふさいで久しい.愚かな方法で、エンティティ属性を一つずつ減らして、声明の対象を順番に並べて、問題がどこにあるかを確認します.黄天は気にしない人で、やっと問題点を見つけました.その名前の後ろにSpecifiedが付いているブックレットタイプの属性が怪しいです.多く話しません.下のコードを見ます.
エンティティ1
エンティティ2
プロジェクトにWebServiceの引用を追加しました.パラメータを組み合わせてサーバに提出したら、オブジェクトの中にいくつかの属性値が足りなくなりました.問題の所在を明らかにするために、コードを使って提出したパラメータをxml文字列に順列化しましたが、やはりいくつかの属性が足りないことが分かりました.どうしてこのようにして、属性は明らかに価値を与えて、どのように序列化した後になくなったのですか?あれこれと思い余って、気がふさいで久しい.愚かな方法で、エンティティ属性を一つずつ減らして、声明の対象を順番に並べて、問題がどこにあるかを確認します.黄天は気にしない人で、やっと問題点を見つけました.その名前の後ろにSpecifiedが付いているブックレットタイプの属性が怪しいです.多く話しません.下のコードを見ます.
エンティティ1
public class Person
{
public string Name { get; set; }
public DateTime Birthday { get; set; }
}
上のエンティティは、プログレッシブは問題ないです.すべて正常です.自分でコードを書いてみてください.問題は次のコードにあります.エンティティ2
public class Person
{
public string Name { get; set; }
public bool NameSpecified { get; set; }
public DateTime Birthday { get; set; }
}
プログレッシブ後のxml文字列は、Name属性がなくなりました."1.0"?>
"http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
"http://core.wsclient.ebiz.chac.com/">false
"http://core.wsclient.ebiz.chac.com/">2017-08-10T13:30:53.7593836+08:00
本体1と比べると、bookタイプのNameSpecified属性が多くなりましたが、この属性は何をするものですか?彼はNameの属性を制御するかどうかは、プログレッシブ化されるべきかどうか、NameSpecified=true、Nameの所属相はプログレッシブ化され、逆はできません.マイクロソフトはなぜこの小さな動きをしますか?データの冗長性を減らすために、ネットワークの帯域幅を節約するためだということは、その初心からも分かります.はい、問題が見つかったら、相応の処理方法を知っています.スペシャリストの配相を確認して、順序化が必要なら、それをtrueに設定すればいいです.