您好:)我在编辑/更新具有相关实体的数据库中的条目时遇到问题。我可以编辑任何条目一次,之后我无法更新与我已修改的实体具有相同主体实体的任何从属实体
我花了5天左右的时间,试图解决这个问题。我在网上找到的所有建议都无效:(
您可以看到项目@:
https://github.com/nedimbih/WorkNotes
问题在于:
public partial class Work
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public virtual Worker Worker { get; set; }
public DateTime Date { get; set; }
public TimeSpan StartingTime { get; set; }
public float Duration { get; set; }
public string Note { get; set; }
}
和
public partial class Worker : IdentityUser
{
public Worker() => WorksDoneByWorker = new HashSet<Work>();
public virtual ICollection<Work> WorksDoneByWorker { get; set; }
}
在WorkRepository中。cs我有这个密码
internal int Update(Work input)
{
Work workInDb = _context.WorkList
.Include(w => w.Worker)
.FirstOrDefault(w => w.Id == input.Id);
if (workInDb != null)
// v.1
// {workInDb = input;}
// v.2
{
workInDb.Note = input.Note;
workInDb.StartingTime = input.StartingTime;
workInDb.Duration = input.Duration;
workInDb.Date = input.Date;
workInDb.Worker = input.Worker;
}
int savedEntries;
try
{
savedEntries = _context.SaveChanges();
}
catch (Exception)
{
savedEntries = 0;
// used as a flag. Calling code acts upon it
}
return savedEntries;
}
对于给定的工作人员,我只能更新一次工作条目。
编辑/更新一个工作条目(savedEntries的值为2)后,我无法再使用与已更新条目相同的worker更新任何条目。我在SaveChanges上遇到异常,称已在跟踪具有相同id的工作人员。
如果我转线工作B。工作者=输入。然后,它会保存,但这不是我需要的功能。
如果启用v.1代码而不是v.2代码,则不会出现异常,但SaveChanges不会执行任何操作。
在这两种情况下(上下文中)修改的条目计数均为0。
thx:)