经过大约一天半的搜索(并重新应用 VS2008 SP1),这篇博客文章终于把事情弄清楚了:
Astoria V.Next Ships for .NET 3.5 SP1 -> Versioning Issue
事实证明,我的安装一切正常,但我忽略了 InitilizeService() 方法的签名发生了如此微妙的变化这一事实。正如 Stephen Forte 在他的博客中指出的那样:
1: //change the IDataServiceConfiguration to DataServiceConfiguration
2: public static void InitializeService(DataServiceConfiguration config)
3: {
4: config.SetEntitySetAccessRule("*", EntitySetRights.All);
5: //take advantage of the "2.0" features
6: config.DataServiceBehavior.MaxProtocolVersion =
7: System.Data.Services.Common.DataServiceProtocolVersion.V2;
8: }
首先需要更改的是第2行,将接口IDataServiceConfiguration改为DataServiceConfiguration(我相信有更好的方法这个,我还没有弄清楚。)。接下来,将 DataServiceBehavior 的 MaxProtocolVersion 属性设置为 V2。之后您就可以使用所有新功能了!
强调我的。一个简单的“我”所带来的不同是惊人的。为了回答斯蒂芬的担忧,这也得到了 MSDN 的支持,但他们目前没有指出引用接口与实现对象的区别:
Configuring the Data Service (ADO.NET Data Services)
这是VB中的代码:
'change the IDataServiceConfiguration to DataServiceConfiguration
Public Shared Sub InitializeService(ByVal config As DataServiceConfiguration)
config.SetEntitySetAccessRule("*", EntitySetRights.All)
'take advantage of the "2.0" features
config.DataServiceBehavior.MaxProtocolVersion = System.Data.Services.Common.DataServiceProtocolVersion.V2
End Sub
编译、测试并通过。我刚刚迈出了进入更大世界的第一步……