Быстрые вопросы об обновлении кода из RIA Services Preview за июль до RIA Services 1.0 - PullRequest
0 голосов
/ 23 августа 2010

У меня нет большого опыта работы с Silverlight на уровне веб-сервисов / уровня абстракции базы данных, и я поймал один аспект моих усилий по переносу.В проекте был основной разработчик C #, который больше не участвует, и я работаю с написанным им кодом.

Я обновляю код в проекте SL3 с предварительной версией RIA Services до SL4 сRIA Services 1.0.Я ссылаюсь на файл RIA_Services_Breaking_Changes.doc для моих усилий по преобразованию кода с этого URL: http://code.msdn.microsoft.com/RiaServices/Release/ProjectReleases.aspx?ReleaseId=3570

Мое зависание связано с тем, что я считаю потенциально автоматически сгенерированным файлом, и с ошибками, связанными с RIA Services EntityCollection / EntityStatestuff.

HerculesModel.metadata.cs (перед началом преобразования)

namespace Everest.Domain.Hercules
{
    using System;
    using System.ComponentModel.DataAnnotations;
    using System.Web.Ria;
    using System.Web.Ria.Data;
    using System.Web.DomainServices;
    using System.Data;
    using System.Data.Objects.DataClasses;

    // The MetadataTypeAttribute identifies AuthenticationTypesMetadata as the class
    // that carries additional metadata for the AuthenticationTypes class.
    [MetadataTypeAttribute(typeof(AuthenticationTypes.AuthenticationTypesMetadata))]
    public partial class AuthenticationTypes
    {
        // This class allows you to attach custom attributes to properties
        // of the AuthenticationTypes class.
        //
        // For example, the following marks the Xyz property as a
        // required field and specifies the format for valid values:
        //  [Required]
        //  [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //  [StringLength(32)]
        //  public string Xyz;
        internal sealed class AuthenticationTypesMetadata
        {
            // Metadata classes are not meant to be instantiated.
            private AuthenticationTypesMetadata()
            {
            }
            public EntityState EntityState;
            public EntityCollection<LoginAccounts> LoginAccounts;
            public int TypeId;
            public string TypeName;
        }
    }
    ...
}

Я обновил ссылки на использование новых пространств имен, перечисленных в документе с критическими изменениями выше,и проверил сборку.Затем Visual Studio 274 раза перечислил в документе следующие ошибки:

Error 53 'EntityCollection' is an ambiguous reference between 'System.ServiceModel.DomainServices.Client.EntityCollection<Everest.Domain.Hercules.BookmarkedProfiles>' and 'System.Data.Objects.DataClasses.EntityCollection<Everest.Domain.Hercules.BookmarkedProfiles>'   C:\...\Everest.Domain.Hercules\HerculesModel.metadata.cs    872 11  Everest.Domain.Hercules
Error 189 'EntityState' is an ambiguous reference between 'System.ServiceModel.DomainServices.Client.EntityState' and 'System.Data.EntityState' C:\...\Everest.Domain.Hercules\HerculesModel.metadata.cs    3501    11  Everest.Domain.Hercules

Поэтому я обновил код, добавив квалификатор для устранения неоднозначности:

namespace Everest.Domain.Hercules
{
    using System;
    using System.ComponentModel.DataAnnotations;
    using System.ServiceModel.DomainServices.Server;
    using System.ServiceModel.DomainServices.Hosting;
    using System.ServiceModel.DomainServices.Client;
    using System.ServiceModel.DomainServices;
    using System.Data;
    using System.Data.Objects.DataClasses;  
    [MetadataTypeAttribute(typeof(AuthenticationTypes.AuthenticationTypesMetadata))]
    public partial class AuthenticationTypes
    {
        internal sealed class AuthenticationTypesMetadata
        {
            private AuthenticationTypesMetadata()
            {
            }
            public System.ServiceModel.DomainServices.Client.EntityState EntityState;
            public System.ServiceModel.DomainServices.Client.EntityCollection<LoginAccounts> LoginAccounts;
            public int TypeId;
            public string TypeName;
        }
    }
    ...
}

После попытки построениякод я получаю следующую общую ошибку 160 раз, и я полностью застрял на этих ошибках TEntity:

Error 28 The type 'Everest.Domain.Hercules.Authentication.LoginAccounts' cannot be used as type parameter 'TEntity' in the generic type or method 'System.ServiceModel.DomainServices.Client.EntityCollection<TEntity>'. There is no implicit reference conversion from 'Everest.Domain.Hercules.Authentication.LoginAccounts' to 'System.ServiceModel.DomainServices.Client.Entity'.   C:\...\Everest.Domain.Hercules\Authentication\AuthenticationModel.metadata.cs   358 85  Everest.Domain.Hercules

У меня установлен Resharper для Visual Studio 2010, и он утверждает, что используются только те директивы, которые используютсядокументом являются System и System.ComponentModel.DataAnnotations.Как я понимаю, файлы * .metadata.cs генерируются автоматически, но как мне восстановить файл метаданных с поддержкой этой новой версии RIA Services?В этом проекте используется среда MVVM с открытым исходным кодом.

Большое спасибо за любую помощь, которую вы мне можете оказать !!!

1 Ответ

0 голосов
/ 25 августа 2010

Вы не должны включать S.SM.DS.Client в свои заявления об использовании.Клиентская сборка должна быть связана только с проектами Silverlight.

Kyle

...