RIA Services EntitySet не поддерживает операцию 'Редактирования'

При создании моих первых шагов в RIA Services (VS2010Beta2) и я встретились с этой проблемой: созданный Модель EF (никакой POCOs), универсальный репозиторий сверху его и Сервис RIA (размещенный в приложении MVC ASP.NET) и попробованный для получения данных из приложения MVC ASP.NET: работавший хорошо. Следующий шаг: клиент Silverlight. Получил ссылку на RIAService (через его контекст), запрошенный для всех записей репозитория и получил их в приложение SL также (использующий этот пример кода):

private ObservableCollection<Culture> _cultures = new ObservableCollection<Culture>();
public ObservableCollection<Culture> cultures
{
  get { return _cultures; }
  set
  {
    _cultures = value;
    RaisePropertyChanged("cultures");
  }
}

....

//Get cultures            
EntityQuery<Culture> queryCultures = from cu in dsCtxt.GetAllCulturesQuery()
                                             select cu;
loCultures = dsCtxt.Load(queryCultures);
loCultures.Completed += new EventHandler(lo_Completed);

....

void loAnyCulture_Completed(object sender, EventArgs e)
{
  ObservableCollection<Culture> temp= 
  new ObservableCollection<Culture>loAnyCulture.Entities);
                AnyCulture = temp[0];
}

Проблема - это: каждый раз, когда я пытаюсь отредактировать некоторые данные записи (в этом примере первая запись), я получаю эту ошибку: Этот EntitySet типа 'Культура' не поддерживает операцию 'Редактирования'.

Я думал, что сделал что-то странное и испытанное, чтобы создать объект Культуры типа и присвоить значение ему: это работало хорошо!

Что я пропускаю? Я должен объявить EntitySet? Я должен отметить его? Я имею к... что?

Заранее спасибо

19
задан Gabriele Petrioli 30 July 2010 в 21:23
поделиться

1 ответ

Оказывается, в классе DomainService нужно реализовать (или хотя бы обозначить "placeholder methods") как "Edit", "Delete",... например

[Delete]
public void DeleteCulture(Culture currentCulture)
{
   throw new NotImplementedException("UpdateCulture not Implemented yet");
}
[Insert]
public void InsertCulture(Culture newCulture)
{
   throw new NotImplementedException("InsertCulture not Implemented yet");
}

Таким образом класс OrganizationDomainContextEntityContainer создает EntitySet с параметром EntitySetOperations.All (то есть доступны все операции CUD).

Надеюсь, это пригодится кому-нибудь в будущем!

42
ответ дан 30 November 2019 в 03:12
поделиться