I do not have a way to test now so is it possible for you to confirm me the question of the title?
I mean in a ADO.NET database transaction, I can update/insert thousands of records before commiting to the database. In Active Directory using System.Directory.Services it seems I need to commit for every entry (or record) that I update/insert.
Thanks.
Active Directory is not a transactional store – so you don’t have the transaction support like you have with a database.
Your observation is absolutely correct – with Active Directory, you deal on a per-object basis; you can retrieve an object, manipulate it, and then save back all the changes (or discard them) – but you don’t have any transaction support to roll back a whole series of operations.
If you really must have this capability, you’d have to write your own Resource Manager for AD (see some ideas here in MSDN) – this would allow you to wrap your AD operations in a
TransactionScope()and roll them back. I don’t think this is a trivial undertaking, otherwise, someone would have done it already….So your current observations are absolutely correct, and without a whole lot of effort, this cannot be changed, unfortunately.