Извинения, если слишком много / недостаточно подробностей или некоторые из них неактуальны, это мой первый пост на этой доске:
Фон
Я сейчас занимаюсь разработкойприложение на основе Silverlight 4 и WCF RIA (SP1) в C # с использованием VS2010.Стек: SQL Server -> nHibernate -> Служба домена -> Агент службы -> Клиент Silverlight 4 (MVVM)
У меня есть 4 таблицы в базе данных с одинаковыми полями в каждой таблице, каждая из которых содержит различный 'тип »тех же данных.
Данные действительно должны быть в одной таблице со столбцом типа, но это устаревшая база данных, которую я не могу изменить.
Я создал POCO для каждой таблицы и однодоменную службу, которая обрабатывает и обновляет четыре различных набора сущностей.Эти типы проецируются на клиент Silverlight, и все элементы CRUD работают должным образом.
Задача
У меня есть модель представления, в которой содержится коллекция ObservableCollection, где T равно единице.из 4 типов сущностей, однако я не хочу использовать 4 коллекции для хранения разных типов сущностей.Пользовательский интерфейс позволит пользователю выбрать тип, и я хочу использовать ту же коллекцию и привязки пользовательского интерфейса для редактирования этих данных.
Я пытался
Создание общей службы домена, но они не поддерживаются.
Наличие типов сущностей на стороне сервера наследуется от абстрактного класса или реализует интерфейс, но доменные службы не проецируют абстрактные классы или интерфейсы.
Создание частичных классов на стороне клиента для 4 проецируемых сущностейкоторые реализуют интерфейс на стороне клиента.Однако, когда я пытаюсь присвоить ObservableCollection<MyEntity>
для ObservableCollection<MyEntityInterface>
, я получаю следующую ошибку:
Cannot implicitly convert type 'System.Collections.ObjectModel.ObservableCollection<BusinessDomain.StandardInterestRate>' to 'System.Collections.ObjectModel.ObservableCollection<BusinessDomain.IInterestRate>'
Я подозреваю, что причина в том, что StandardInterestRate наследуется отRIA Entity class.Любые мысли приветствуются.