Provider interface for SQL locks
madelson opened this issue · 2 comments
madelson commented
When using the library with IOC patterns it's often desirable to inject connection information separately from the type of lock or lock name. A centralized provider API would simplify this:
class SqlDistributedLockProvider
{
// factory methods
SqlDistributedLock CreateLock(string name);
SqlDistributedLock CreateLockWithExactName(string name); // does not use GetSafeName()
SqlDistributedReaderWriterLock CreateReaderWriterLock(string name);
...
// we may also want to offer convenience methods for locking directly
IDisposable TryAcquireExclusiveLock(string name, TimeSpan timeout, CancellationToken cancellationToken);
}
XtremeOwnageDotCom commented
Here is my implementation of a interface, used with dependancy injection:
(Couldn't get the formatting working properly)
XtremeOwnageDotCom commented
I personally prefer this method- as it only requires me to reference this library in the project which contains my database connection.
The interface is defined in my "interfaces" class, which is referenced everywhere.