Мне нужно создать сценарий Master-Detail, где в мастере я могу показать много типов элементов, которые все они реализуют IDto
:
interface IDto
{
int Id { get; set; }
string Title { get; set; }
EntityType { get; set;
}
enum EntityType
{
Contact,
Person,
Company,
Customer
Employee,
Vendor,
Job
}
Примечание: я использую Entity Framework EDM (генерируется ObjectContext
и EntityObject
с).
Иерархия классов такова, что Contact
является подклассом для Person
, а Company
, Person
является базовым классом Employee
, Company
является базовым классом Vendor
.Customer
имеет свойство Contact
, которое может быть Contact
или Person
, и имеет список Job
.
Теперь вВ главном списке я хочу загрузить коллекцию DTO из DomainService
(это LinqToEntitiesDomainService<ObjectContext>
, и я хочу, чтобы были выбраны только указанные поля в контракте IDto
, а затем, при выборе, загрузить всю сущность свсе его поля / связанные данные и т. д. в области сведений.
Обновление : я подумал о другой идее.
Создайте представление базы данных (SQL2008), которое возвращает 3 строкиПриведенный выше IDto
контракт, в котором перечисление будет храниться как int или tinyint (затем изменит перечисление на байт), затем в edm я могу составить таблицу на иерархию для каждого EntityType, хранящегося в списке, и вернуть егоиз DomainService
.
Кстати, все значения перечисления будут использоваться для запроса, фактически ни один объект не вернет Contact
для его свойства EntityType
, поскольку Contact
является абстрактным и можетбыть либо Person
или Company
, но я все еще хочу иметь возможность запросить обаиз них.
Обновление 2
Клиент также хочет, чтобы для каждого элемента в списке также были все его задания.
На основе иерархии, которую я описал выше, для Customer
- выберите все свои вакансии;для Contact
или Person
- выберите Customer
s Job
s (если его Customer
).Vendor
или Employee
s не предназначены для регистрации с Job
s.
Я думаю, что единственный способ сделать это - с помощью представлений базы данных.
Я ошибаюсь?Каковы последствия?Я использую SL5 с RIA.
Хорошо ли просмотрено?Или я должен обрабатывать все запросы в клиенте, используя клиентский POCO?потому что на самом деле это значение используется только для получения имени контакта и его заданий.дальнейшие детали и манипуляции будут сделаны в других представлениях о Entity
сущностях, которые они сами.
Так что, по вашему мнению, эксперты?