实体框架4.1 CodeFirst问题MVC

时间:2011-04-08 10:58:33

标签: model-view-controller frameworks entity code-first

我使用最新的EF 4.1和CodeFirst有一个非常奇怪的问题,我认为它来自于我的一对一关系。

问题很奇怪,我有两个带有不相关实体的差分控制器,允许我列出并保存一个实体的ICollection。

http://localhost:51638/DailyHours/Edit/1 and

http://localhost:51638/HoursRemaining/Edit/1

两者都孤立地工作。例如,我首先输入一个,编辑并保存(工作)。然后我输入第二个,编辑并保存,它不起作用。我得到的错误是:

  

参数字典包含方法'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]'参数'dailyHours'的无效条目,但参数需要类型为'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 :(得分:0)

在这里回答。 Model binding two or more collections

感谢