C# DB更新随机抛出验证错误MVC 4 EF
所以我有一个控制器,它只更新一个db条目中的两个字段,但是该条目链接到了另外两个表,我知道这是一个不好的解释,但有时有效,有时无效,我无法识别提交之间的差异,因为没有代码更改 错误 控制器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
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