Можно ли отслеживать сущности OData через производный класс? - PullRequest
0 голосов
/ 01 мая 2020

У меня есть C# приложение WPF, где я отслеживаю сущности, доставленные через OData API.

В моем обычном коде я бы сделал

var files = new DataServiceCollection<File>(ctx.Files);

, где ctx Экземпляр класса ODataService, который наследуется от DataServiceContext и ctx.Files, имеет тип DataServiceQuery<File>. Это позволяет мне отслеживать и манипулировать коллекцией File объектов на сервере.

Однако у меня есть класс MyFile, который наследует File:

public class MyFile : File {
   ...
}

Что я очень бы хотелось отследить все File объекты как MyFile объекты. Так как я не могу уменьшить File до MyFile, вместо этого я попытался сделать следующее:

var files = new DataServiceCollection<MyFile>(ctx.Files.Cast<MyFile>());

Это даст мне коллекцию того типа, который я хочу. Однако, когда я изменяю объект, например files[0] и пытаюсь сохранить изменения на сервере, используя ctx.SaveChanges(), я получаю исключение, утверждающее, что свойство типа MyFile (которого нет в File) не существует для типа 'Файл'. Кроме того, ошибка гласит: «Убедитесь, что используются только имена свойств, которые определены типом».

Есть идеи о том, как правильно использовать производные классы в контексте OData?

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