As far as I know, thre is NO way, how to configure NHibernate to INSERT and UPDATE but never DELETE. I would bet that this issues is related to the application level. The most supsected to me, is that DELETE operation is not wrapped in transaction or it does not have call session.Flus()... could you show your Delete code? and explain how it is wrapped in transaction?
–
Radim KöhlerJul 18 '14 at 8:55

or check that you don't have mutable=false but if you can update rows then I don't suspect that...
–
RippoJul 18 '14 at 14:12

Did you confirm that the data is deleted ? Maybe profiler doesn't show the code because you are making batch updates via batch_size. Just check if the delete does occur or not after you commit the trx
–
ReverseBladeJul 23 '14 at 12:03

Hey @RadimKöhler The delete is not wrapped in a transactionScope by the looks of things: public void Delete(T entity) { using (Session) { this.Session.Delete(entity); } } Might this be the issue? The update is: public T SaveOrUpdate(T entity) { using (Session) { using (TransactionScope scope = new TransactionScope()) { Session.SaveOrUpdate(entity); scope.Complete(); } return entity; } }
–
ComanighttrainJul 23 '14 at 18:39

If the deleted object is a part of collection of another object then in the mapping give .Cascade.AllDeleteOrphan() and just remove the item from the collection, then nhibernate will send the delete statement to DB.