Сбой DataServiceContext.SaveChanges при отправке ожидающих изменений объектов производных типов - PullRequest
0 голосов
/ 28 апреля 2020

Я использую C# для использования и манипулирования серией File объектов на сервере. Поскольку мне нужно выполнить определенные действия с каждым File объектом и сохранить некоторую информацию в базе данных, я создал производный класс:

public class MyNewFile : File {
   // Here I have additional properties that I derive from the File data
   // and later store in a database/present in UI, etc.
   public string Name { get; set; }
}

Доступно для меня ctx.Files типа DataServiceQuery<File> , Я начинаю отслеживать коллекцию, выполнив следующее, где я также приведу к производному типу:

DataServiceCollection<MyNewFile> files = 
  new DataServiceCollection<MyNewFile>(ctx.Files.Where(.. predicate here..).Cast<MyNewFile>());

Теперь я могу внести изменение в элемент в отслеживаемой коллекции:

files[0].Title = "Changed title!";

Однако, когда я в следующий раз использую ctx.SaveChanges() для отправки ожидающих изменений на сервер, кажется, что он также пытается передать свойства производного класса, например, свойство Name. Однако, поскольку сервер не распознает поле Name на объекте File, я получаю DataServiceRequestException с внутренним исключением типа DataServiceClientException с сообщением в виде

«Свойство« Имя »не существует в типе« Файл ». Убедитесь, что используются только имена свойств, определенные этим типом».

Любая идея о том, как это исправить, поэтому только вносит изменения в свойства базового типа File?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...