WCF Data Services 5.0已經在4月9日發布,支持OData V3版本的協議。之前版本的WCF Data Services是隨.NET FX 4.0發布的,這次是單獨提供了安裝包下載。這個版本有幾個特性很不錯,具體參看文章 http://blogs.msdn.com/b/writingdata_services/archive/2012/04/09/my-favorite-things-in-odata-v3-and-wcf-data-services-5-0.aspx。
新特性主要用於支持開放式數據協議(OData)版本3中的增強部分。以下是部分有趣的特性:
- 詞匯表(Vocabularies) —— 標注,主要為使用OData發布的數據提供更豐富的描述(例如,類型驗證/范圍/顯示相關的元數據);
- 操作提供器(Action Providers) ——一種通過在數據中描述URI來注入行為的方法。用戶可以通過向這些URI發送請求用於引發一些操作,該特性同樣工作於Entity Framework;
- 16項新的空間原語(Spatial Primitives)——它允許客戶端在過濾、投影和排序子句中對地理空間數據執行操作;
- ODataLib現在支持對所有的OData負載進行序列化和反序列化;
- EdmLib—— 構建服務的EDM以用於OData序列化/反序列化,其中包括支持標注;
- 支持Any/All查詢(目前還不支持聯接Join)。
EF 4.3對Code First的支持也很不錯,如何在EF 4.3的Code First結合WCF Data Service,可以參考http://msdn.microsoft.com/zh-cn/library/hh527719。這篇文章的代碼經過簡單的修正就可以跑了。
namespace CustomerDataServices
{
public class CustomerDataService : DataService<CustomerOrderContext>
{
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
config.SetEntitySetAccessRule("Customers", EntitySetRights.AllRead | EntitySetRights.WriteMerge);
//config.SetEntitySetAccessRule("EdmMetadatas", EntitySetRights.None);
config.UseVerboseErrors = true;
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
}
}
}