Действительно, это проблема с изменением первичного ключа объекта. Просто я считаю, что это исключение, потому что вы пытаетесь изменить первичный ключ сущности DEPARTMENT, а не PERSONNEL.
Главное, чего вы хотите достичь, это изменить значение внешнего ключа, верно? Если это так, вы можете сделать это двумя способами:
1.Без туда и обратно в БД:
Заменить
query.DEPARTMANT.DEPARTMANTID = DepartmantId
с
query.DEPARTMENTReference.EntityKey = new EntityKey("YourDataContext.DEPARTMENT", "DEPARTMENTId", value);
2. Путем совершения обходов базы данных, чтобы получить новый ОТДЕЛ, который вы хотите установить для ПЕРСОНАЛА:
using (FirebirdEntityz fe = new FirebirdEntityz())
{
var query = (from c in fe.PERSONEL.Include("DEPARTMANT") where c.PERSONELID == PersonelID select c).First();
query.NAME = NAME;
query.SURNAME = SURNAME;
query.DEPARTMANT.DEPARTMANTID = DepartmantId;
//query.DEPARTMANT.DEPARTMANTID = DepartmantId
var newDepartment = (from d in fe.DEPARTMENT
where d.DEPATMENTID==DepartmentId
select d).First();
query.DEPATMENT = newDepatment;
int result = fe.SaveChanges();
if (result > 0)
{
MessageBox.Show(result + " record updated");
}
}