Обновление Data Services для .NET 3.5 SP1 ломает клиентов, есть идеи по откату? - PullRequest
0 голосов
/ 17 декабря 2009

Хорошо ... серьезная проблема.

Я сделал обновление , думая, что я мог бы продолжать использовать версию CTP2 Microsoft.Data.Services.Client библиотеки для подключения, пока они не обновили биты Silverlight. Нет идти Хорошо, я могу жить с этим.

Я откатил сервис до библиотек CTP2 (Microsoft.Data.Services + Microsoft.Data.Services.Client) перекомпилировал и затем обновил ссылку на сервис в silverlight.

На этом этапе служба И клиент SL3 все используют биты CTP2. Должно быть хорошо, верно? Неправильно. Очень, очень неправильно.

System.Data.Services.Client.DataServiceCollection 'не содержит конструктора, который принимает аргументы' 2 '

Это серьезный ограничитель шоу, и не было упомянуто, что это обновление нарушит функциональность CTP2. Честно говоря, предупреждения о SL dll было недостаточно:)

Есть идеи, как решить эту проблему? Должен ли я попытаться удалить обновление или я могу указать более старую библиотеку в файле конфигурации где-нибудь?

Помощь! :)

Ken

1 Ответ

1 голос
/ 17 декабря 2009

Во-первых, проблема в том, что один из ваших проектов выбирает неправильную сборку, это может быть служба, но, скорее всего, это клиентское приложение.

Доступные конструкторы в CTP 2 v1.5 для DataServiceCollection:

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

Я предлагаю, если вы хотите использовать dll CTP, чтобы вы проверили свои ссылки в своем клиентском приложении и любом другом приложении, которое использует System.Data.Services.Client.dll, и перейдите на Microsoft.Data.Services. Client.dll (находится в программных файлах в папке CTP2 ADO.NET Data Services V1.5).

Я также установил последнюю версию, и в настоящее время я использую обе версии на моем ПК, на котором он работает.

Еще одна важная вещь - проверить глобальный кеш сборок, поскольку там будут установлены обе версии (с CTP 2 ddls, имеющим номер версии 99.0.0.0).

Что-то, что я сделал, для библиотек CTP, я добавил ссылки из папки ctp вместо глобального кэша сборок.

Привет

Даниэль Портелла

Обновление : Soulhuntre, это должен быть EntityClassGenerator, который использует ссылка на веб-службу, ссылка на службу должна использовать dll GAC system.data.services.client для генерации классов вместо старого CTP из них. Есть две вещи, которые вы можете сделать на самом деле, одно - это сделать то, что я сказал выше, а другое - удалить обновленное (удалить КБ), которое должно отменить сделанные изменения. Вы могли бы даже попытаться удалить старую ссылку на службу и создать ее снова, убедившись, что она использует библиотеки CTP для генерации классов.

Это работает для моего решения, потому что я написал свою собственную реализацию DataServiceClientGenerator, чтобы делать волшебные вещи, которые не выполняет поставляемый MS, поэтому я должен запускать обе установки без проблем.

Конец обновления.

...