gpt4 book ai didi

c# - 防止在 ASP.NET MVC 和 Entity Framework 中更新未更改的值

转载 作者:太空狗 更新时间:2023-10-29 23:34:53 25 4
gpt4 key购买 nike

我正在使用 ASP.NET MVC 和 Entity Framework 。我有一个编辑人员网页,可以在其中编辑人员的字段,然后在回发操作中,我使用以下代码。

var person = objectCtx.Persons.Where(s => s.Id == id).FirstOrDefault();
TryUpdateModel(person, form.ToValueProvider());
objectCtx.SaveChanges();

效果很好。但是,在生成的 SQL 中,即使值未更改,我仍然可以看到 UPDATE 语句。有没有办法在 ASP.NET MVC 或 Entity Framework 中避免这种情况?

最佳答案

好吧,如果您分配一个属性,那么 Entity Framework 将假定您知道自己在做什么并更新它。您是说用户只更改了一个字段,但我不确定 MVC 或 Entity Framework 应该如何知道,在 POSTed HTML 表单中的所有键值对中,用户实际上只更改了一个.在你的问题中,你是说“这些值没有改变”,但在你对@jchapa 的回答的评论中,你说“并非所有信息都是相同的”。这表明实际问题不在于 Entity Framework 正在做什么,而在于您告诉它做什么。

我认为您可能在错误的地方寻找解决方案。

如果您真正的问题是传递给操作的模型包含用户永远无法更改且永远不应更新的字段(可能因为它们实际上根本不在表单上),那么您可以将白名单传递给TryUpdateModel

如果您的真正问题是另一个用户可能在用户对表单发出 GET 请求和用户发布她的更改之间更改了 Person 实例,那么您可以添加一个TIMESTAMP 字段添加到表中并设置固定并发模式。

关于c# - 防止在 ASP.NET MVC 和 Entity Framework 中更新未更改的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3809583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com