2014-12-11 58 views
-1

我正在调用一个自定义API azure移动服务。由动态模式给出的响应。 我改变了模式,但似乎天青已经缓存了旧模式。如果我更改为实体类型作为返回类型,一切正常。但是当我改回动态模式时,azure使用旧模式。有任何想法吗 ?移动服务缓存

仅供参考,我的动态模式看起来像这样

[DataContract] 
public class HigscoreItem 
{ 
public HigscoreItem(Int32 aq, Int32 sec, string userId, Int32 rank, bool npb, Int32  distance) 
{ 
      AnsweredQuestions = aq; 
      Seconds = sec; 
      UserId = userId; 
      Rank = rank; 
      NewPersonalBest = npb? 1 : 0; 
      DistanceLeft = distance; 
     } 
     [DataMember(Name = "answeredquestions")] 
     public Int32 AnsweredQuestions; 
     [DataMember(Name = "seconds")] 
     public Int32 Seconds; 
     [DataMember(Name = "userid")] 
     public string UserId; 
     [DataMember(Name = "rank")] 
     public Int32 Rank; 
     [DataMember(Name = "distanceleft")] 
     public Int32 DistanceLeft; 
     [DataMember(Name = "newpersonalbest")] 
     public Int32 NewPersonalBest; 
    } 

}

+0

MS文档建议禁用动态模式[链接](http://msdn.microsoft.com/zh-cn/ -us/library/jj193175.aspx)http://msdn.microsoft.com/en-us/library/jj193175.aspx在哪里完成。也许我误解了动态模式是什么? – Knutdag 2014-12-11 04:07:15

+0

不便之处:/ int(0)的值不放在JSON数据包中......这就是欺骗我的原因:P。但仍然想知道MS文档建议禁用动态模式? – Knutdag 2014-12-11 04:20:59

回答

0

正如Knutdag在上述评论指出,整数零是不会被序列化,所以要在数据库中的对象看起来不一样,并且如果动态模式处于打开状态,数据库将相应地更改其模式。

在开始生产时,您应该关闭Dynamic Sc​​hema,以避免由于新版本(如int 0)中的错误或者甚至是恶意插入而导致数据丢失。这个想法是,一旦你的应用程序正式运行,你已经决定了你的模式,你不需要明确地改变它。动态模式是一种初始开发工具,它可以让您灵活地使系统在端到端工作,同时您仍然在搞清楚客户端数据模型的外观。一旦你在生产中,你有真实的数据,你想手动管理模式的变化,以确保事情顺利进行