我有一個我在WPF應用程序中引用的odata服務。它似乎有一個問題反序列化一些事情。例如,下面的查詢總是以空值返回主機。應用程序中的數據反序列化問題
var results = _container.HostVersions.Expand(hv => hv.Host)
.Expand(hv => hv.Version.Service)
.Where(hv => hv.Version.Id == versionId &&
hv.Version.Service.Id == serviceId);
但是,如果從該查詢取生成的結果URL,並將其粘貼在瀏覽器中,JSON顯示主機對象。另外,我知道Host對象在數據庫中。所以基本上由於某種原因,並不是所有Expand調用中的對象都在應用程序中被反序列化。我無法在谷歌或本網站上搜索此問題。希望以前有人遇到過這個問題。
編輯:
所以我作出上述呼籲之前,我做這樣的判斷:
var result = _container.HostVersions
.Expand(hv => hv.Host)
.Expand(x => x.Version.Service.Versions)
.Where(hv => hv.Host.ServerFarmEnvironment.EnvironmentId == environmentId &&
hv.Host.ServerFarmEnvironment.ServerFarmId == serverFarmId);
如果我把展開在那裏主機,如上面看到的,然後調用在第一種方法這個帖子,主持人是填充。但是,如果我從此調用中刪除了主機擴展,則此主題中的第一個方法對於主機爲空。它真的很奇怪。提琴手錶明,這兩個迴應是相同的,因爲我認爲URL正確解析的odata。所以它必須是一些奇怪的反序列化問題,這是毫無意義的。
1.它是最新的。 2.當我剛剛查詢_container.Hosts時,我可以看到所有主機記錄。 3.我相信最大深度是6英寸。 我檢查了所有這些東西。這真的是最奇怪的事情。我忘了提及這在我嘗試使用的示例WinForm和控制檯應用程序中不存在問題。就在我擁有的這個WPF應用程序中。 –
如何檢查(也許張貼)什麼是使用提琴手發送和接收?專業提示(如果您還不知道):fiddler可以自動處理.fiddler域,因此將您的url更改爲http://localhost.fiddler/service/thisisme.svc將允許您檢查原始數據包的可疑標題。 – too
此外,如果您使用Microsoft.OData.EntityFrameworkProvider檢查此軟件包的最新更新並嘗試運行Update-Package Microsoft.Data.OData,它可能是一個錯誤。 – too