回答
添加下面的類到您的項目:
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. 如何通過對象值從List(Of myClass)中刪除對象?
- 8. 如何通過向Nhibernate中的Session.Delete(...)發送查詢刪除對象3.3.3.4001
- 9. 如何通過他自己的類來刪除一個對象?
- 10. 如何使用條件刪除NHibernate對象?
- 11. 用django通過id刪除對象
- 12. C#NHibernate - 刪除所有對刪除對象的引用
- 13. 在會話中使用過多對象來提高NHibernate性能
- 14. NHIbernate通過QBE加載單列PK
- 15. 通過使用EntityFramework傳遞非PK值來獲得PK值
- 16. 如何通過在iOS中觸摸對象來移動對象
- 17. Hibernate來過濾或刪除子對象
- 18. 如何通過屬性值從數組中刪除對象?
- 19. 如何通過其值刪除數組中的對象?
- 20. 如何通過Memcached中的模式刪除對象?
- 21. Fluent NHibernate - 如何插入一個子對象而不通過NHibernate
- 22. 讀NHibernate的刪除對象從第一緩存中刪除後
- 23. 如何通過攔截從實體中刪除NHibernate代理
- 24. NHibernate的 - 通過ID或對象引用
- 25. 通過指針檢測對象刪除
- 26. 通過std :: weak_ptr刪除一個對象
- 27. 通過oid查找和刪除對象
- 28. Django通過Post請求刪除對象
- 29. 通過OneToOneField刪除相關對象
- 30. Rails通過AJAX刪除模型對象
如果我的主鍵列的名稱與「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