5
Làm cách nào để xóa các mục có nhibernate mà không cần kéo tất cả các đối tượng trong bộ nhớ?Cách xóa hàng loạt bằng nhibernate?
Điều này có thể hoặc tôi có phải sử dụng sql thô không?
Làm cách nào để xóa các mục có nhibernate mà không cần kéo tất cả các đối tượng trong bộ nhớ?Cách xóa hàng loạt bằng nhibernate?
Điều này có thể hoặc tôi có phải sử dụng sql thô không?
Sử dụng phương thức ExecuteUpdate. Mã bên dưới sẽ thực hiện xóa hàng loạt theo lô. Điều này làm việc trong NHibernate 2.1.0. (Không chắc chắn về các phiên bản trước)
foreach (List<int> batch in GetBatches(records, _batchSize))
{
using (ITransaction transaction = _session.BeginTransaction())
{
_session.CreateQuery(String.Format("DELETE FROM {0} WHERE Id IN (:idsList)", _domainObject.Name))
.SetParameterList("idsList", batch.ToArray())
.ExecuteUpdate();
transaction.Commit();
}
}