以下正确更新了“评论”对象,但也更新了所有其他具有相同原始值“状态”的评论对象。
review=_context.Review.Where(q=>q.id==1).Include(q=>q.Status).SingleOrDefaultAsync();
review.Status.Status1= "approved";
因此 id=1 的审查会从“待定”正确更新,但如果它也有“待定”,则 id=2 的审查也是如此。
谢谢
以下正确更新了“评论”对象,但也更新了所有其他具有相同原始值“状态”的评论对象。
review=_context.Review.Where(q=>q.id==1).Include(q=>q.Status).SingleOrDefaultAsync();
review.Status.Status1= "approved";
因此 id=1 的审查会从“待定”正确更新,但如果它也有“待定”,则 id=2 的审查也是如此。
谢谢
您正在更新状态记录的 Status1 属性,而不是为审阅分配不同的状态。
例如,假设您有 3 个状态,“待定”、“已批准”和“已拒绝”。这将是 3 个状态记录。评论具有指向状态记录的状态 ID。您的 EF 审阅实体也有一个状态参考。
鉴于以下记录:
状态 ID:1,状态 1:“待定”
状态 ID:2,状态 1:“已批准”
StatusId:3,Status1:“拒绝”
您可能有一条 StatusID 为 1 的 Review 记录。(“Pending”)如果您进行 review.Status.Status1 = “Approved”,您是在告诉 EF 将记录 #1 的 status1 文本字段更新为“Approved”。与 StatusID #1 相关的每条评论都会显示“已批准”。
您真正想要做的是将评论指向状态 ID #2。
所以在基本层面上,它应该看起来像:
review.Status = context.Statuses.Single(x => x.Status1 == "Approved");
这告诉 EF 将该评论与状态匹配 Approved 相关联。EF 将在幕后将 Review 记录中的 StatusID 更新为“2”。现在有更有效的方法来分配这样的状态,但它应该可以帮助您了解您当前遇到的参考问题。