我有3个类,与3个数据库表相关:
public class Stat { public int Id { get; set; } public string Name { get; set; } public List<Quantity> Quantities { get; set; } } public class Quantity { public int Id { get; set; } public string Name { get; set; } public virtual Stat Stat { get; set; } public virtual Unit Unit { get; set; } } public class Unit { public int Id { get; set; } public string Name { get; set; } public string Abbreviation { get; set; } public List<Quantity> Quantities { get; set; } }
Stat可以有一个数量列表,一个数量有一个单位.如果我想保存带有实体框架的Stat,我必须遍历其数量列表,并检查数量是否已存在或新创建(数据来自HTML表单).
public void UpdateStat(Stat stat) { foreach (Quantity q in stat.Quantities) { if (q.Id == 0) { db.Quantities.Add(q); } else { db.Entry(q).State = EntityState.Modified; } } db.Entry(stat).State = EntityState.Modified; db.SaveChanges(); }
问题是,当更多的数量具有相同的单位时,会发生错误:“ObjectStateManager中已存在具有相同键的对象.ObjectStateManager无法使用相同的键跟踪多个对象.”
我不知道如何使用其数量和单位列表更新Stat.
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。