Я пытаюсь использовать службы RIA с серверной частью Entity Framework.Модель была автоматически сгенерирована дизайнером.(VS 2010, .NET 4.0, EF 4.0, SilverLight 4.0) Проблема, с которой я сталкиваюсь, заключается в том, что ссылочные свойства загружаются, как и ожидалось, на сервисном уровне, но когда эта информация передается приложению SilverLight эталонному объектустановится NULL
1002 * Я использовал два подход к наполнению Reference Entity:.
public Employee GetEmployeeByID(int employeeID)
{
var result = this.ObjectContext.Employees
.Include("EmployeeRoles")
.Where(emp => emp.EmployeeID == employeeID)
.FirstOrDefault();
return result;
}
И
public Employee GetEmployeeByID(int employeeID)
{
var result = this.ObjectContext.Employees
.Where(emp => emp.EmployeeID == employeeID)
.FirstOrDefault();
if (result != null && result.EmployeeRoleReference.IsLoaded == false)
{
result.EmployeeRoleReference.Load();
}
return result;
}
Оба метода появляется правильно заполнить ссылки на объекты, когдаосмотр предметов до возвращения.Однако, когда я пытаюсь сослаться на объект Employee из пользовательского интерфейса через службы RIA, сущность, на которую ссылается EmployeeRole, равна NULL.
На внешнем интерфейсе я звоню:
public void LoadEmployeeProfile()
{
int empID = WebContext.Current.User.EmployeeID;
LoadOperation<Employee> loadEmployee = _appcontext.Load(_appContext.GetEmployeeByIDQuery(empID));
loadEmployee.Complete += new System.EventHandler(loadEmployee_Completed);
}
void LoadEmployee_Completed(object sender, System.EventArgs e)
{
LoadOperation<Employee> loadEmployee = sender as LoadOperation<Employee>;
if (loadEmployee == null)
return;
loadEmployee.Completed -= LoadEmployee_Completed;
foreach (Employee employee in loadEmployee.Entities)
{
this.EmployeeProfile == employee;
break;
}
}
Это выглядит какбудь то все, что касается учебников, но я не смог найти причину, почему службы RIA не заполняют объект Reference, как я бы ожидал.