views:

33

answers:

1

Hello:

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.

A: 

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.

marc_s