У меня есть 3 класса (данные T1 и T2 поступают из файла SQLite)
T1 (EmployeeEntity -> Id, FirstName, LastName, DepartmentFK) << DepartmentKey isвнешний ключ для T2.Id </p>
T2 (DepartmentEntity -> Id, Department)
T3 (DepartmentEmployee -> Id, FirstName, LastName,DepartmentFK, Department) << Id должен совпадать с T1.Id (сделать сохранение изменений обратно намного проще) </p>
В моей модели представления я создаю новую коллекцию ObservableCollection public ObservableCollection<DepartmentEmployee> EmployeesView
и хочу заполнить ихданные из 2 таблиц SQLite, и вот как я это делаю:
get
{
var t1 = new ObservableCollection<EmployeeEntity>(_emp.GetAll().ToObservable());
var t2 = new ObservableCollection<DepartmentEntity>(_dep.GetAll().ToObservable());
var result = t1.Join(t2, t => t.DepartmentFK, t => t.Id, (EmployeeEntity, DepartmentEntity) =>
{
var t3 = _mapper.Map<EmployeeEntity, DepartmentEmployee>(EmployeeEntity);
t3 = _mapper.Map(DepartmentEntity, t3);
return t3;
});
_employeesview = result.ToObservable();
return _employeesview;
}
Это работает для моего просмотра (я могу отобразить FirstName, LastName и соответствующий отдел (на основе внешнего ключа)), но когда я пытаюсьчтобы сохранить мои изменения обратно, он изменяет неправильную запись. Моя проблема заключается в следующем:
T1
1 - Test - User - 2
2 - Another - User -3
3 - Third - User - 1
T2
1 - Development
2 - HR
3 - Production
приводит к этому
T3
2 - Test - User - 2 - HR
3 - Another - User - 3 - Production
1 - Third - User - 1 - Development
поэтому он «убивает» мой идентификатор сотрудника и заменяет его идентификатором отдела. Так как я могу это исправить?
доп. Информация: это мои отображения, которые я сделал
cfg.CreateMap<DepartmentEntity, Departments>();
cfg.CreateMap<Departments, DepartmentEntity>();
cfg.CreateMap<EmployeeEntity, DepartmentEmployee>();
cfg.CreateMap<DepartmentEmployee, EmployeeEntity>();
cfg.CreateMap<DepartmentEntity, DepartmentEmployee>();