2014-11-11 2 views
0

в моей архитектуре wvf mvvm У меня есть 2 таблицы с именем Отдел и сотрудник.DepartmentId - это внешний ключ таблицы Employee. Я использую хранимую процедуру для получения данных. Эта процедура отлично работает и получает детали в студии управления sql. Моя процедура Storeed являетсяВнутренняя регистрация в Wpf Mvvm Архитектура

Select * from Employee e inner join Department d on e.DepartmentId = d.departmentId 

В моей MVVM архитектуре название отдела не получает при выборе детали работника в ObservableCollection в viewmodel.How мы можем получить DepartmentName в ObservableCollection в MVVM ViewModel.

Мой сотрудник модели Класс

public class Employee 
    { 
public Employee() 
     { 
      this.Departments = new HashSet<Department>(); 
     } 
     public long DepartmentId; 
     public long EmployeeId; 
     public string Name; 
public virtual ICollection<Department> Departments { get; set; } 
} 
} 

И мой ObservableCollection в ViewModel является

public ObservableCollection<Employee> GetEmployeeList() 
{ 
var result = from p in dc.sel_Employee().AsEnumerable() 
         select new 
         { 
          EmployeeId= p.EmployeeId, 
          Name = p.Name 
         }; 
return new ObservableCollection<Employee>(result); 
} 

Показывая ошибка

Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access. 

Может кто-нибудь help.Thanks заранее.

ответ

1

Изменить тип возвращаемого GetEmployeeList метода IList<object> или ObservableCollection<object> Вы можете создать анонимный тип в LINQ, но вы не можете вернуть анонимный тип.

Также вы можете поиска решения для возвращения анонимных типов из LINQ

1

Или может быть, вы просто должны изменить

// your prev code 
select new 
{ 
    EmployeeId= p.EmployeeId, 
    Name = p.Name 
}; 

в

// your prev code 
select new Employee() 
{ 
    EmployeeId= p.EmployeeId, 
    Name = p.Name 
}; 

В этом решении вы не» t используйте анонимные типы. Но если dc.sel_Employee().AsEnumerable() возвращает перечислимого выдержанные в Employee вы должны просто опустить выберите пункт:

public ObservableCollection<Employee> GetEmployeeList() 
{ 
    return new ObservableCollection<Employee>(dc.sel_Employee().AsEnumerable()); 
} 

Существует нет присоединитесь положение, но я думаю, что это не ваша реальная проблема. Если вы используете EF (или другой ORM), и вы правильно определили FK, вам не нужно беспокоиться о присоединениях. Единственное, что я рассмотрю, это использование метода ObjectQuery<T>.Include Method.

Смежные вопросы