NHibernate批量刪除資料的方法

2021-09-08 23:43:00 字數 1221 閱讀 5014

方法一:session.delete()

這個方法是最常用的,一共有4個過載的方法

void delete(object obj);

int delete(string query)

int delete(string query, object value, itype type);

int delete(string query, object values, itype types);

這幾個過載方法中,第乙個方法是基於現有物件的刪除操作,其餘是使用query語句查詢獲得物件,再逐個刪除的,如果使用批量刪除時,效果不太理想

int delete(string query, object values, itype types); 的用法如下:

datetime start = new datetime(2000,1,1);

datetime end = new datetime(2001,1,1);

session.delete("from operlog operlog where operlog.logtime between ? and ?"

, new object

, new itype );

session.flush();

方法二:session. createsqlquery()

isqlquery createsqlquery(string querystring);

iquery createsqlquery(string sql, string returnalias, system.type returnclass);

iquery createsqlquery(string sql, string returnaliases, system.type returnclasses);

這個方法是直接執行sql語句的不需要session.flush,效率是最高的

isqlquery qry = session.createsqlquery("delete from operlog where logtime between :a and :b");

qry.setparameter("a", start);

qry.setparameter("b", end);           

qry.executeupdate();

但使用該方法後,之前

session

緩衝區中已經載入的物件還在,需要額外處理

redis批量刪除資料

redis本身未提供批量刪除的功能,但我們可以使用下面的技巧批量刪除全部或指定格式的資料。刪除以test開頭的所有key值 redis cli h p 埠 a 密碼 keys test xargs redis cli h p 埠 a 密碼 del 如果是刪除localhost的redis資料,且未設...

PHP批量寫入資料 批量刪除資料

批量插入可以參考 sql insert into data id,ip,data values for i 0 i 100 i sql join sqls connect mysql query sql 批量刪除多條記錄,對於比較多的資訊,如果沒有批量刪除功能是非常麻煩的。可以加全選核取方塊 連線資...

NHibernate 中刪除資料的幾種方法

1.使用session.delete t t 方法 使用這個方法,需要先從資料庫中獲取實體t或者直接new t 給id賦值,然後才能呼叫 session.delete t a var session nhibernatesession.current 自己寫的乙個獲取session的方法 var t...