Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DB更新随机抛出验证错误MVC 4 EF_C#_Asp.net_Asp.net Mvc_Entity Framework - Fatal编程技术网

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

C# DB更新随机抛出验证错误MVC 4 EF,c#,asp.net,asp.net-mvc,entity-framework,C#,Asp.net,Asp.net Mvc,Entity Framework,所以我有一个控制器,它只更新一个db条目中的两个字段,但是该条目链接到了另外两个表,我知道这是一个不好的解释,但有时有效,有时无效,我无法识别提交之间的差异,因为没有代码更改 错误 控制器 GroupFitnessSession session = unitOfWork.GroupFitnessSessionRepository.GetById(item.GroupFitnessSessionId); session.IsConfirmed = true; session.Attendees

所以我有一个控制器,它只更新一个db条目中的两个字段,但是该条目链接到了另外两个表,我知道这是一个不好的解释,但有时有效,有时无效,我无法识别提交之间的差异,因为没有代码更改

错误

控制器

GroupFitnessSession session = unitOfWork.GroupFitnessSessionRepository.GetById(item.GroupFitnessSessionId);
session.IsConfirmed = true;
session.Attendees = item.Attendees;
unitOfWork.GroupFitnessSessionRepository.Update(session);
我遗漏了模型的其他字段,但没有一个字段与这些OEN的名称相同或类似

型号

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; }
公共类GroupFitnessSession
{
公共字符串GroupFitnessSessionId{get;set;}
[必需]
公共虚拟培训师{get;set;}
[必需]
公共虚拟位置{get;set;}
}
公共类位置
{
公共字符串LocationId{get;set;}
公共场所()
{
GroupFitnessSession=新哈希集();
}
公共ICollection GroupFitnessSession{get;set;}
}
公共课堂培训师
{
公共培训师()
{
GroupFitness=newhashset();
}
公共ICollection GroupFitness{get;set;}
如果您需要任何其他信息,请随时询问。
这太让我困惑了,任何建议都会被采纳的

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

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


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

GroupFitnessSession session = unitOfWork.GroupFitnessSessionRepository.GetById(item.GroupFitnessSessionId).Include(s => s.Trainer).Include(s => s.Location);

为什么要为类对象放置required属性???@COLDTOLD,以便EF可以在通过代码首先创建DB时确定原则结束。我不确定required是如何完成您想要的操作的,但我确定您得到的错误是验证错误,因为培训师或位置没有data@COLDTOLD我有理由肯定他不会它正在做我期望的事情,因为如果没有它,EF将不知道关系的主要目的是什么,也不会建立数据库。不,对象位置和培训师不是空的(我已经检查过,如果你不相信我,可以显示SS),即使它们是空对象,也会通过所需的vaildationStephen Muecke,已经向您解释了使整个实体成为必需的解决方案,这就是为什么会出现错误的原因,您说应该是这样的,我不确定如何,但当它工作时,该属性在不工作时设置,该属性为空且需要D