I've spent the last week in coding a wrapper to Berkeley Database. It is a handy DB and it was a pity that a managed interface was missing. I guess that this lack was due to the structure of the C interface. The library uses lots of function pointers to obtain polymorphism. Unfortunately this means that the interface cannote be easily mapped to PInvoke.
As a matter of fact I had to write an intermediate DLL that contains all the public functions but in a way that can be consumed by PInvoke.
The library works with Rotor and .NET 1.1 on Windows. I expect it will work also on other platforms and runtimes too!