首先,问题是您的一个项目选择了错误的程序集,它可能是服务,但很可能是客户端应用程序。
DataServiceCollection 的 CTP 2 v1.5 中可用的构造函数是:
private DataServiceCollection();
internal DataServiceCollection(IEnumerable<T> items);
protected DataServiceCollection(DataServiceContext context, string entitySetName, IEnumerable<T> items, Func<EntityChangedParams, bool> entityChangedCallback, Func<EntityCollectionChangedParams, bool> collectionChangedCallback);
internal DataServiceCollection(DataServiceContext context, string entitySetName, Func<EntityChangedParams, bool> entityChangedCallback, Func<EntityCollectionChangedParams, bool> collectionChangedCallback, IEnumerable<T> items);
RTM 版本(您安装的更新)KB976126 中可用的构造函数是:
public DataServiceCollection();
public DataServiceCollection(IEnumerable<T> items);
public DataServiceCollection(DataServiceContext context);
public DataServiceCollection(IEnumerable<T> items, TrackingMode trackingMode);
public DataServiceCollection(DataServiceContext context, string entitySetName, Func<EntityChangedParams, bool> entityChangedCallback, Func<EntityCollectionChangedParams, bool> collectionChangedCallback);
public DataServiceCollection(IEnumerable<T> items, TrackingMode trackingMode, string entitySetName, Func<EntityChangedParams, bool> entityChangedCallback, Func<EntityCollectionChangedParams, bool> collectionChangedCallback);
public DataServiceCollection(DataServiceContext context, IEnumerable<T> items, TrackingMode trackingMode, string entitySetName, Func<EntityChangedParams, bool> entityChangedCallback, Func<EntityCollectionChangedParams, bool> collectionChangedCallback);
internal DataServiceCollection(object atomMaterializer, DataServiceContext context, IEnumerable<T> items, TrackingMode trackingMode, string entitySetName, Func<EntityChangedParams, bool> entityChangedCallback, Func<EntityCollectionChangedParams, bool> collectionChangedCallback);
我建议如果您想使用 CTP dll,请检查您对客户端应用程序和任何其他使用 System.Data.Services.Client.dll 的应用程序的引用并更改为 Microsoft.Data.Services.Client.dll (位于 ADO.NET Data Services V1.5 CTP2 文件夹中的程序文件中)。
我也安装了最新版本,目前正在我的 PC 上运行这两个版本。
另一个重要的事情是检查全局程序集缓存,因为两个版本都将安装在那里(CTP 2 ddls 的版本号为 99.0.0.0)。
我所做的是为 CTP dll 添加了来自 ctp 文件夹而不是全局程序集缓存的引用。
问候
丹尼尔·波特拉
更新:Soulhuntre 它必须是 Web 服务引用正在使用的 EntityClassGenerator,服务引用必须使用 GAC system.data.services.client dll 来生成类而不是旧的 CTP 类。您实际上可以做两件事,一是按照我上面所说的去做,另一件事是删除应该恢复所做更改的更新(卸载 KB)。您甚至可以尝试删除旧的服务引用并再次创建它,同时确保它使用 CTP dll 来生成类。
它适用于我的解决方案,因为我已经编写了自己的 DataServiceClientGenerator 实现,可以做 MS 提供的那个没有做的神奇事情,这一定是我可以毫无问题地运行两种安装的原因。
更新结束。