Я использую 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
?