Я использую WCF Data Services (v2), и моя Entity Model со временем немного выросла, то есть более 100 сущностей.Существует немало навигации, которая возможна.Пользовательские интерфейсы клиента - это LOB-приложения с экранами ввода и поиска данных.Формы поиска возвращают наборы данных, а формы ввода данных обычно состоят из ОДНОЙ сущности, которая обладает большинством свойств, но с МНОГИМИ свойствами навигации из-за комбинированных списков, необходимых для отображения этих отдельных коллекций (например, форма ввода данных Сотрудника с ComboBox, отображающимиСписок состояний или список отделов. Я лениво загружаю данные комбинированного списка. FYI.
Проблема, с которой я сталкиваюсь, заключается в том, что если я хочу заполнить простой список (через ComboBox), то полезная нагрузка будет HUMONGOUS! Использование fiddler, напримерв сгенерированном XML есть куча беспорядка, который на самом деле мне НЕ НУЖЕН просто заполнять этот ComboBox.
Вот пример ОДНОЙ записи, возвращаемой с типом Employee.
-----------------------------
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<feed xml:base="http://localhost/HumanResourcesService.svc/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">
<title type="text">Employees</title>
<id>http://localhost/HumanResourcesService.svc/Employees</id>
<updated>2011-11-09T23:41:01Z</updated>
<link rel="self" title="Employees" href="Employees" />
<entry>
<id>http://localhost/HumanResourcesService.svc/Employees('54924')</id>
<title type="text"></title>
<updated>2011-11-09T23:41:01Z</updated>
<author>
<name />
</author>
<link rel="edit" title="Employee" href="Employees('54924')" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/EmployeeTypes" type="application/atom+xml;type=feed" title="EmployeeTypes" href="Employees('54924')/EmployeeTypes" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Locations" type="application/atom+xml;type=feed" title="Locations" href="Employees('54924')/Locations" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Buildings" type="application/atom+xml;type=feed" title="Buildings" href="Employees('54924')/Buildings" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Managers" type="application/atom+xml;type=feed" title="Managers" href="Employees('54924')/Managers" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Assignments" type="application/atom+xml;type=feed" title="Assignments" href="Employees('54924')/Assignments" />
// ********************************************
// MANY MORE LINKS - REMOVED FOR BREVITY
// ********************************************
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/xxx" type="application/atom+xml;type=entry" title="xxx" href="Employees('54924')/xxx" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/yyy" type="application/atom+xml;type=entry" title="yyy" href="Employees('54924')/yyy" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/zzz" type="application/atom+xml;type=entry" title="zzz" href="Employees('54924')/zzz" />
<category term="xxx.HumanResources.Employee" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<content type="application/xml">
<m:properties>
<d:EmpNo m:type="Edm.String">54924</d:EmpNo>
<d:FirstName m:type="Edm.String">John</d:FirstName>
<d:LastName m:type="Edm.String">Hughes</d:LastName>
<d:MiddleName m:type="Edm.String">Michael</d:MiddleName>
<d:Salary m:type="Edm.Decimal">20000</d:Salary>
<d:Notes m:type="Edm.String">Anything...</d:Notes>
<d:PrimaryPhone m:type="Edm.String">984-875-4545</d:PrimaryPhone>
<d:StartDate m:type="Edm.DateTime">1977-02-01T00:00:00</d:StartDate>
<d:EndDate m:type="Edm.DateTime">1995-12-31T00:00:00</d:EndDate>
// ********************************************
// MANY MORE PROPERTIES - REMOVED FOR BREVITY
// ********************************************
<d:AnotherFieldX m:type="Edm.Double" m:null="true" />
</m:properties>
</content>
</entry>
</feed>
-----------------------------
Как видите, мне не нужен весь этот мусор, такой как эти ССЫЛКИ, и это всего лишь ОДИН объект. Все эти комбинированные списки связаны со многими объектами (в диапазоне от 10 до 1000 записей). Как вы можете себе представить,вся эта лишняя болтовня может быстро взорвать мой сервис. Все, чего я хочу, этодля отображения коллекции Имен сотрудников в этом случае (много похожих случаев для ComboBox).
Кто-нибудь сталкивался с этим запутанным сценарием?Я ищу некоторые рекомендации.