Entity Framework 4.1 CodeFirst Проблема MVC - PullRequest
0 голосов
/ 08 апреля 2011

У меня очень странная проблема с использованием последней версии 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);

Я не могурешить эту проблему вообще. Любая помощь будет принята с благодарностью.

Спасибо

Дэви

1 Ответ

0 голосов
/ 08 апреля 2011
...