Replaced IRelation interface with IReferenceTracked and ReferencedTracked. Added a simple Relations sample to show example usage of this API. Moved all exception classes to a separate namespace. Add a .Net Standard 1.6 library to Nuget and download (VelocityDBStandard.dll). Updated driver to LinqPad – added a couple of missing references.
Moved BTree extensions to namespace VelocityDb.Collection.BTree.Extensions.BTreeExtensions. If you are using indexes or doing LINQ queries with BTreeSet, you need to add:
using static VelocityDb.Collection.BTree.Extensions.BTreeExtensions
to your files that does or else index/BTreeSet lookups will be slow. The same extensions are also provided in the VelocityDBExtensions library which is included with source code in the download and now also as a NuGet. To use that code instead of the VelocityDB build in extensions do using static VelocityDBExtensions.Extensions.BTree.BTreeExtensions; instead and you will be able to debug the code and hopefully help us improve this tricky expression tree code.
Added support for System.Transactions. You will need to add a reference to it in any app using VelocityDB.
Adding support for .net core. VelocityDBServer source code added to solution provided in download.
Enable index fields with IOptimizedPersistable. Some fixes for updated DynamicDictionary test. Fixes for DateTime indexing. LoadFields moved from IOptimizedPersistable to SessionBase to simplify interface.
Several bugs fixed as revealed by new DynamicDictionary test. DynamicObject base class and dynamic now better supported. Thanks for the test Dean! GeoHashSample updated.
Fix for csv export of fields typed as interface type. Avoid clearing cached objects from weak references when clearing cached objects to save memory use.
Add explicit clear of weak reference object cache when clearing potentially out of date objects in a database. Our online issue manager was seen picking up these invalid objects. With this change, this issue is gone.
Fixes to AllObjects and OfType, especially Skip.
Additional fix for ISerializable. Added option to include/exclude selected Vertex types in Vertex.Traverse
Remove unnecessary use of ToArray() in VelocityGraph.
Added support for fields of type Type[] and now persisting Type info parameter for ISerializable SerializationInfo
Now supporting ISerializable. This was added to support special classes/structs such as those in the NodaTime library.
Fix for null toVertex case in Vertex.Traverse. Now finds all possible paths from a given Vertex within max hops
Properly handle serialization of null fields typed as System.Object or as interface. Introducing ServerClientSessionShared for shared reads from VelocityDBServer with multiple concurrent threads.
Updated OptimizedPersistent.Equals and User’s Guide
Added LinqPad driver source code to sample solution and GitHub. Fix for showing struct in DatabaseManager. Added prototype Sync related stuff to DatabaseManager.
Use a weak reference set of shared sessions in VelocityDBServer and add and fix cleanup code.
Fix VelocityDBServer to process requests separately for each system database directory.
Updates to Azure file stream api code in AzureSession class. More works now. Added AzureFileApi.cs to NUnit tests.
Fix for string -> Type conversion. Thanks Marco for the tip!
Fix for updating assembly version in persisted type strings. Schema is updated when using a different VelocityDB assembly version compared to version used by prior update transaction. This is unfortunate but currently required because current .Net class loader is using assembly version when resolving a Type. Any better ideas?
Fix for handling of closed network streams in VelocityDBServer.
Add a missing lock in VelocityDBServer.
Enable multiple threads/sessions and processes to add objects, including same type of object, concurrently using ServerClientSession. NUnit test in MultipleUpdaters.cs updating to test this.
Add NUnit test to MultipleUpdaters.cs for testing with multiple sessions and multiple threads adding same object type to a couple of databases using ServerClientSession. Fix a couple issues found by this new test. Allow reading previously committed page from VelocityDBServer with pessimistic locking while page is updated by another transaction.
Another fix for fields typed as interface.
Verified to work with Microsoft Azure cloud file storage. Added prototype AzureSession class (project VelocityDbExtensions). AzureSession is still work in progress but using shared Azure drives directly using “net use” commands works OK.
Fix for fields typed as interface.
Fix cache management regressions.