Если обновлять модель из базы данных, как обновить DomainService без воссоздания нового файла DomainService? - PullRequest
0 голосов
/ 20 декабря 2011

Я добавил две новые таблицы в базу данных: EmailCampaign и EmailTemplate.Я обновил EDMX с обновлением модели из базы данных.EDMX находится в библиотеке классов RIA Services.

Теперь со стороны клиента (библиотека silverlight) я не могу видеть вновь созданные объекты, только старые.Я проверил сгенерированный код EF Designer.cs и появились новые сущности, я просто не могу получить к ним доступ с клиента.

Я пытался удалить и прочитать EDMX, но он не работал.

ОБНОВЛЕНИЕ Я выяснил, что сущности подвергаются через доменную службу.Я воссоздал доменную службу и все заработало.Но проблема возникает каждый раз, когда у меня появляются новые таблицы в базе данных, как мне перегенерировать доменную службу без генерации нового файла .cs доменной службы и скопировать мой старый код во вновь сгенерированный и устранить все возникающие ошибки (каждый раз, когдатак же).Так что это бремя.Есть ли какие-нибудь инструменты или какие-то фреймворки?

1 Ответ

0 голосов
/ 21 декабря 2011

Частичные занятия - ваш друг! Я разбил свой класс обслуживания домена на более мелкие, сгруппировав сущности, которые я часто использую вместе - что параллельно с моими классами моделей на стороне клиента. Итак, мой основной класс обслуживания домена выглядит следующим образом ...

  [EnableClientAccess()]
  public partial class xxx_DomainService : LinqToEntitiesDomainService<xxxEntities>
  {
  }

тогда каждый файл содержит это:

      public partial class xxx_DomainService : LinqToEntitiesDomainService<xxxEntities>
      {
         public IQueryAble<Address> GetAddresses()
         {
            return this.ObjectContext.Addressess;
         }
        ....more code

      }

Таким образом, если я изменю таблицу, мне нужно будет только заново создать службу домена для выбранных таблиц.

Это означает, что когда я создаю "новую" таблицу, я просто использую какое-то поддельное имя, создаю файлы и впоследствии заменяю строку "public partrial class". Файлы друзей не требуют никаких изменений. Просто будьте осторожны со своими пространствами имен!

НТН, Ричард

...