В моих данных 3 уровня иерархии:
DepartmentList -> EmployeeCollection -> Employee
В основном, есть несколько отделов, в каждом из которых есть несколько сотрудников.
Вот мой исходный код:
public class DataService : DataService<Departments>
public class Departments
{
private List<Department> _deptCollection;
public IQueryable<Department> DeptCollection { get { return this._deptCollection.AsQueryable(); } }
...
...
}
[DataServiceKey("DepartmentId")]
public class Department
{
public string DepartmentId { get; set; }
private IList<EmployeeBase> _employees { get; set; }
public IQueryable<EmployeeBase> Employees
{
get { return _employees.AsQueryable(); }
}
...
}
[DataServiceKey("Id")]
public class EmployeeBase
{
public string Id { get; set; }
public string Name { get; set; }
}
Когда я пытаюсь просмотреть DataService, я получаю следующую ошибку:
Сервер обнаружил ошибку
обработка запроса. Исключение
сообщение «О типе контекста данных
«Отделы», есть топ
IQueryable свойство 'DeptCollection'
чей тип элемента не является сущностью
тип. Убедитесь, что IQueryable
свойство типа объекта или указать
атрибут IgnoreProperties на
тип контекста данных, чтобы игнорировать это
имущество.'. Смотрите журналы сервера для более
подробности. Трассировка стека исключений:
в
System.Data.Services.Providers.ReflectionServiceProvider.PopulateMetadata (IDictionary 2
knownTypes, IDictionary
2 childTypes,
IDictionary 2 entitySets) at
System.Data.Services.Providers.BaseServiceProvider.PopulateMetadata()
at
System.Data.Services.DataService
1.CreateProvider ()
в
System.Data.Services.DataService 1.HandleRequest()
at
System.Data.Services.DataService
1.ProcessRequestForMessage (Stream
messageBody) в
SyncInvokeProcessRequestForMessage (Объект
, Object [], Object []) в
System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke (Объект
экземпляр, Object [] входы, Object [] &
выходы) в
System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin (MessageRpc &
rpc) в
System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5 (MessageRpc &
rpc) в
System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41 (MessageRpc &
rpc) в
System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4 (MessageRpc &
rpc) в
System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31 (MessageRpc &
rpc) в
System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3 (MessageRpc &
rpc) в
System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2 (MessageRpc &
rpc) в
System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11 (MessageRpc &
rpc) в
System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1 (MessageRpc &
rpc) в
System.ServiceModel.Dispatcher.MessageRpc.Process (Boolean
isOperationContextSet)
Я думаю, что мне нужно реализовать здесь навигацию по отношениям, которую модель данных сущностей делает сама для источника SQL. Но я не слишком уверен. Любые указатели были бы очень полезны.
Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.
Спасибо.