DB更新随机抛出验证错误MVC 4 EF

时间:2016-01-12 23:02:17

标签: c# asp.net asp.net-mvc entity-framework

所以我有一个控制器,只更新数据库条目中的2个字段,但是这个条目链接到另外两个表,我知道这是一个不好的解释,但有时它有效,有时它没有,我无法确定有什么不同提交之间没有代码更改。

错误 enter image description here

控制器

GroupFitnessSession session = unitOfWork.GroupFitnessSessionRepository.GetById(item.GroupFitnessSessionId);
session.IsConfirmed = true;
session.Attendees = item.Attendees;
unitOfWork.GroupFitnessSessionRepository.Update(session);

模型中还有其他字段我已经遗漏了,但它们中没有与这些字母相同的名称或其他字段

模型

public class GroupFitnessSession
{
    public string GroupFitnessSessionId { get; set; }
    [Required] 
    public virtual Trainer Trainer { get; set; }
    [Required] 
    public virtual Location Location { get; set; }
}


public class Location
{
    public string LocationId { get; set; }
    public Location()
    {
        GroupFitnessSession = new HashSet<GroupFitnessSession>();
    }
    public ICollection<GroupFitnessSession> GroupFitnessSession { get; set; }
}
public class Trainer
{
    public Trainer()
    {
        GroupFitness = new HashSet<GroupFitnessSession>();        
    }
    public ICollection<GroupFitnessSession> GroupFitness { get; set; }

如果您需要任何其他信息,请随时提出 这让我感到困惑,任何建议都会被接受

编辑:显示位置和培训师不是空对象 enter image description here

正如您可以看到EF自动生成的属性以及我正在尝试更新的属性

enter image description here

1 个答案:

答案 0 :(得分:0)

如果您将控制器的第一行更改为:

,这将有效
GroupFitnessSession session = unitOfWork.GroupFitnessSessionRepository.GetById(item.GroupFitnessSessionId).Include(s => s.Trainer).Include(s => s.Location);