gpt4 book ai didi

c# - 通过 AJAX 编辑 NHibernate 记录

转载 作者:行者123 更新时间:2023-11-30 22:05:02 25 4
gpt4 key购买 nike

在将现有实体发布到我的 Controller 时,我无法弄清楚如何编辑它。当我保存一个新的 Person 时,它工作得很好,因为 Id 没有设置,所以 NHibernate 将它视为一个新实体并将它附加到 session 中。但是,当我尝试编辑一个现有 实体时,MVC 模型联编程序无法设置Id,即使发布的JSON 已正确设置。因此,即使它是一个现有实体,NHibernate 再次将其视为一个新实体,然后抛出异常,因为我正在对不在数据库或 session 中的实体调用 .Update()

这是我正在使用的代码(显然 Person 有更多的属性,我只是将它们关闭以保持代码简短)

人类:

public class Person
{
public virtual int Id {get; private set;}
//... other properties
}

发布到我的编辑操作的 JSON

{"Id": 10}

在 Controller 中

public JsonResult EditPerson(Person person)
{
Session.Update(person);
return Json(new { success = true});
}

最佳答案

我一直觉得您必须加载实体才能将其放入 session 中,以便您可以对其进行编辑。

所以你需要这样的代码

var entity = Session.Get<Entity>(entity.Id);

//make your changes
Session.Save(entity);

关于c# - 通过 AJAX 编辑 NHibernate 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24655239/

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