nHibernate 更新不适用于现有实体

标签 nhibernate entity

我正在尝试使用 nHibernate 更新记录。我尝试了几种解决方案,但都没有用(没有显示错误,数据也没有更新)。
第一段代码:

MyRepository rep = new MyRepository(GetCurrentSession());
UserPost post = rep.GetById(id);
post.ValidTo = date;
rep.Update(post);

第二个代码:

ISession session = GetCurrentSession();
MyRepository rep = new MyRepository(GetCurrentSession());
UserPost post = rep.GetById(id);
post.ValidTo = date;
rep.Update(post);
session.Update(post);
session.Transaction.Commit();
session = null;

也许有人有什么建议?

最佳答案

1) 如果您不使用事务,则需要刷新 session :

var post = _session.Load<Post>(id); //assumes this record exists in the db
post.SomeAttribute=somenewvalue;
_session.SaveOrUpdate(post);
_session.Flush;

2) 我没有看到正在启动的交易?您需要启动事务才能提交。

using(var transaction = _session.BeginTransaction()){
   _session.SaveOrUpdate(post);
   transaction.commit();
}

关于nHibernate 更新不适用于现有实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10414243/

相关文章:

nHibernate 不检索手动更改的数据

linq - 使用 NHibernate 3.0 QueryOver 或 LINQ 提供程序的权衡

c# - Entity Framework 排除结果

docker - 在 Docker Swarm 中,如何找到哪个节点 IP 正在运行给定任务?

NHibernate在主键上一对多映射

nhibernate,无法解析属性 QueryOver 只有一张表

database - "entity"指的是一个对象还是一组对象?

c# - 使用 Entity Framework 的加密列

nhibernate - 流畅的 NHibernate 内存泄漏

database - 字 "Must"或字 "Can"表示完全参与