I would recommend not to use MSSCCI as abstraction layer, as that old style SCC api is fully modeled after the checkout-checkin principal promoted by VSS.
Most newer Source Control systems use the Update/Merge principle and/or allow a combination of Update/Merge and locking to mimick the old behavior.
If you want to use Subversion from .Net you should also look at the new SharpSvn library, as provides you all Subversion power in a .Net style api. (You don't have to think about memory management, apr arrays, function pointers, etc. if you don't like to).
In most cases it allows you to use Subversion with about 1/5th of the code the older bindings need.
using(SvnClient client = new SvnClient())
{
client.Update(@"C:\My\WorkingCopy");
// Do something to your working copy
File.AppendAllText(@"C:\My\WorkingCopy", "\nFile Change\n");
SvnCommitArgs ca = new SvnCommitArgs();
ca.LogMessage = "Line added";
client.Commit(@"C:\My\WorkingCopy", ca);
}