2010-08-04 6 views
1

Я имею реальную проблему с EF v1. У меня довольно большой EDMX с, может быть, 50 субъектов, отображенных, но это один объект вызывает у меня горе.рамки Entity выполнения Insert, когда это следует делать в Update

Субъекта имеет отображение других лиц, которые в действительности являются справочными таблицами, но по какой-то причине он пытается сделать вставку, а не только обновить себя.

Вот фрагмент моего кода:

using (var context = new someEntities()) { 
    var studentCourseJoin = 
     context.StudentCourseJoinSet.Where(o => o.Code == scjCode).First(); 

    studentCourseJoin.EntryStatus = new EntryStatus { Code = viewModel.StudentDetails.EntryStatusCode }; 
    studentCourseJoin.ParentalInHigherEducation = new ParentalInHigherEducation { Code = viewModel.StudentDetails.ParentalInHigherEducationCode }; 
    studentCourseJoin.School = new School { Code = viewModel.StudentDetails.SchoolCode }; 

    studentCourseJoin.Institution = new Institution { Code = viewModel.StudentDetails.InstitutionCode }; 

    studentCourseJoin.LastSchoolEndYear = viewModel.StudentDetails.LastSchoolEndYear; 
    studentCourseJoin.LastInstitutionEndYear = viewModel.StudentDetails.LastInstitutionEndYear; 

    // Blows up here trying to do an insert on the studentCourseJoin.Institution. 
    // But if I removed this one, then it will blow up on another one. 
    context.SaveChanges(true); 
} 

Если кто имеет какие-либо идеи, пожалуйста, они очень помогают.

ответ

1

Попробуйте добавить эти строки перед вызовом SaveChanges:

ObjectStateEntry entry = context.ObjectStateManager.GetObjectStateEntry(studentCourseJoin); 
entry.ChangeState(EntityState.Modified); 

Update:

Попробуйте для Institution вместо:

studentCourseJoin.Institution = context.Institutions.FirstOrDefault(i => i.Code == viewModel.StudentDetails.InstitutionCode); 
+0

Привет, спасибо за ответ, там не кажется, быть методом ChangeState ?? –

+0

Да, жаль, что это EFV1 вы работаете с. Попробуйте entry.SetModified() вместо этого. – Yakimych

+0

Нет до сих пор не работает. Объект studentCourseJoin устанавливаются как изменяется, но отношения я определил выше сказать добавили, что я думал, что это правильно. Я проверил базу данных и существует значение в справочных таблицах. идеи? –

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