У меня есть WCF DataService со следующими моделями CodeFirst:
public class Project
{
public int ProjectID { get; set; }
public string Name { get; set; }
public virtual Owner Owner { get; set; }
}
public class Owner
{
public int OwnerID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
У меня также есть стандартные вспомогательные классы SchedulerContext
, SchedulerContextInitializer
и SchedulerService.svc
. Мой сервис выглядит так:
public class SchedulerService : DataService<ObjectContext>
{
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
}
protected override ObjectContext CreateDataSource()
{
var ctx = new SchedulerContext();
var objectContext = ((IObjectContextAdapter)ctx).ObjectContext;
return objectContext;
}
}
Я очень хорошо добавил ссылку на сервис в мой проект Silverlight. Я могу просмотреть сервис в своем браузере и увидеть мои начальные данные. Когда я перехожу на http://localhost:31560/SchedulerService.svc/Projects(1)/Owner
, я вижу свои начальные данные. Однако, когда мои проекты загружаются в мой класс доступа к данным Silverlight:
public class SchedulerService : ISchedulerService
{
public SchedulerService()
{
var context = new SchedulerContext(new Uri("/SchedulerService.svc", UriKind.Relative));
this.Projects = new DataServiceCollection<Project>();
DataServiceQuery<Product> query = context.Projects;
this.Projects.LoadAsync(query);
}
public DataServiceCollection<Project> Projects { get; private set; }
}
Владелец каждого проекта всегда null! Как мне это исправить?!