RIA Services: Entity Framework Reference Entities - PullRequest
1 голос
/ 25 сентября 2010

Я пытаюсь использовать службы 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, как я бы ожидал.

1 Ответ

1 голос
/ 26 сентября 2010

Чтобы уточнить, вы пытаетесь запросить запись сотрудника и включить EmployeeRoles, как определено ссылочными ссылками в базе данных / модели объектов.

В проекте .Web RIA, который содержит метаданные для Employee, я бы проверил, отметили ли вы EmployeeRoles в метаданных Employee с атрибутом [Include].

Вам необходимо включить ссылки в ваш запрос и в метаданные модели.

Надеюсь, это поможет.

...