回答
添加下面的类到您的项目:
public static class SessionHelper
{
public static void Delete<TEntity>(this ISession session, object id)
{
var queryString = string.Format("delete {0} where id = :id",
typeof(TEntity));
session.CreateQuery(queryString)
.SetParameter("id", id)
.ExecuteUpdate();
}
}
现在可以使用session.Delete<User>(1)
。
时退房IQUERY对象的executeUpdate方法。
IQuery q = session.CreateQuery ("delete from User where Id = 1");
q.ExecuteUpdate();
应该删除对象而不检索它afaik。
你能做到这一点
User user = new User();
user.Id = 1;
session.Delete(user);
试试这个:
var user = session.Load<User>(1);
session.Delete(user);
Load
将创建与标识设置用户对象的代理。我不确定在删除它之前Delete
是否会从数据库加载对象,而我目前无法对其进行测试。
恐怕它会加载它。 – 2010-06-17 19:49:39
负载没有得到!加载只是为实际对象创建一个代理。这只是一个带有Id的盒子。实际上从数据库中加载记录。所以,不,它不会“实际”从db中加载任何东西,只要你只读取id属性即可。 – 2016-02-03 06:56:32
正如你所说的,“加载”不会加载用户。但删除将永远。 – Junior 2016-11-18 14:25:18
在版本2之前没有办法。 在版本2之后,您在IQuery
上有ExecuteUpdate()
方法,并且在ISession.Delete()
上有一个重载方法,它接受定义删除查询的字符串
也许在2010年是真的,但现在有更多更好的选择以及 – 2017-09-22 15:42:28
@LuisFilipe:那些是......? ? – 2017-11-06 22:42:15
- 1. 如何删除NHibernate中的子对象?
- 2. 如何在NHibernate中有效地使用ID删除对象?
- 3. 如何通过PK来dispatch_detail
- 4. 如何使用NHibernate不使用PK返回一个对象?
- 5. 如何通过按钮删除对象?
- 6. 使用nhibernate删除对象的问题
- 7. 如何通过他自己的类来删除一个对象?
- 8. 如何使用条件删除NHibernate对象?
- 9. C#NHibernate - 删除所有对删除对象的引用
- 10. 通过使用EntityFramework传递非PK值来获得PK值
- 11. 在会话中使用过多对象来提高NHibernate性能
- 12. NHIbernate通过QBE加载单列PK
- 13. 如何通过在iOS中触摸对象来移动对象
- 14. 如何通过Memcached中的模式删除对象?
- 15. 通过std :: weak_ptr删除一个对象
- 16. Django通过Post请求删除对象
- 17. 如何通过拦截从实体中删除NHibernate代理
- 18. 如何通过属性删除对象列表中的多个对象
- 19. 删除pk场
- 20. NHibernate的 - 通过ID或对象引用
- 21. 如何使用RestKit删除对象?
- 22. 如何通过JavaScript中的键使用对象来获取值?
- 23. NHibernate的不删除子对象
- 24. 关于删除子对象的NHibernate StaleStateException
- 25. 使用Fluent删除存储过程nHibernate
- 26. Fluent NHibernate - 使用存储过程删除
- 27. 如何通过在android studio中使用firebase auth来删除注册用户?
- 28. 如何使用图形API来删除对象
- 29. 如何通过迭代对象数组来删除某些项目?
- 30. 删除的副对象,同时通过使用地图
如果我的主键列的名称与“id”不同,这也可以工作吗? – 2016-11-25 13:17:54
@A_J是的。 'id'是一个特殊的名字,代表了entitiy的id。请参阅http://nhibernate.info/doc/nhibernate-reference/queryhql.html#queryhql-where。 – 2016-11-25 14:48:22
为什么不只是'session.Delete(session.Query().FirstOrDefault(c => c.Id == id));'? –
2017-12-01 08:12:08