Службы RIA поддерживают 2 типа пользовательских типов: сложные типы и типы объектов. Сущность - это постоянный объект, у которого есть ключ, который однозначно идентифицирует его. Сложный тип - это просто объединение нескольких полей примитивного типа в один объект. Они не работают с общей концепцией классов и иерархий, они накладывают ограничения на то, что вы можете или не можете делать, чтобы более эффективно решать некоторые конкретные проблемы.
Одним из ограничений является то, что сложные типы не могут иметь производные типы. Трудно сказать, почему, но я полагаю, что без ограничения структура была бы намного более сложной.
Теперь есть несколько вариантов решения проблемы:
- Если у вас уже есть соответствующий ключ в вашем классе
Fruit
(скажем, идентификатор базы данных), просто пометьте его атрибутом [Key]
.
- Если у вас нет ключа и вам все равно, добавьте свойство
Guid
, которое возвращает Guid.NewGuid()
, пометьте его [Key]
и все будет в порядке. Обратите внимание , что в этом случае вы не сможете установить какие-либо отношения к Fruit
сущностям, а также сохранить изменения на сервере.
- Не используйте наследование. Если в этом нет необходимости, почему бы не жить без него?
- Использовать обычный WCF. RIA Services не являются общей коммуникационной платформой. Они очень специфичны для всех этих сущностей-отношений.
Выбор за вами, потому что это зависит от ваших требований.