У меня очень странная проблема с использованием последней версии EF 4.1 с CodeFirst, которая, как мне кажется, происходит из-за отношений один к одному.
Проблема странная в том, что у меня есть два разных контроллера с несвязаннымиобъекты, которые позволяют мне перечислить и сохранить ICollection объекта.
http://localhost:51638/DailyHours/Edit/1 and
http://localhost:51638/HoursRemaining/Edit/1
Оба работают в изоляции.Например, я сначала ввожу один, редактирую и сохраняю (работает).Затем я ввожу второе, редактирую и сохраняю, и это не работает.Я получаю ошибку:
Словарь параметров содержит недопустимую запись для параметра 'dailyHours' для метода 'System.Web.Mvc.ActionResult Edit (Int32, System.Collections.Generic.ICollection 1[App.Domain.DailyHours])' in 'App.Web.Controllers.DailyHoursController'. The dictionary contains a value of type 'System.Collections.Generic.List
1 [App.Domain.HoursRemaining] ', но для параметра требуется значение типа' System.Collections.Generic.ICollection`1 [App.Domain.DailyHours] '. Имя параметра: параметры
Если изменить порядок, в котором я редактирую и сохраняю, я получаю ту же ошибку, но с обратными значениями DailyHours и HourRemaining.
Ключевые аспекты Pocos:
public class Task
{
[Key]
public int TaskId { get; set; }
public virtual HoursRemaining HoursRemaining { get; set; }
}
public class HoursRemaining
{
[Key]
public int TaskId { get; set; }
public virtual Task Task { get; set; }
}
DailyHoursне имеет прямого отношения ни к одному из них:
public class DailyHours
{
[Key]
public int DailyHoursId { get; set; }
public virtual Sprint Sprint { get; set; }
}
Я добавил код в OnModelCreating своего контекста, чтобы установить принцип отношения один к одному:
modelBuilder.Entity<Task>().HasOptional(h => h.HoursRemaining).WithRequired(t => t.Task);
Я не могурешить эту проблему вообще. Любая помощь будет принята с благодарностью.
Спасибо
Дэви