Fork me on GitHub

WCF Data Services 5.0 和 EF 4.3 Code First

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;
    }
  }
}

Visual Studio 2010 中的实体框架 4.0 和 WCF 数据服务 4.0

WCF Data Services Action Provider for Entity Framework

posted @ 2012-04-11 22:26 张善友 阅读(...) 评论(...) 编辑 收藏