Enable sorting by custom types that implement IComparable<T> but not IComparable.
Move projects into source directory.
Prevent objects with null values in key fields from being added.
Use query filter to prevent matching unrelated documents with different key fields.
Replace IFieldMappingInfo.PropertyInfo with PropertyName, PropertyValue to decouple from reflection based implementations.
IFieldMappingInfo can provide custom KeyConstraint for filtering queries.
Add DocumentKeyAttribute to specify a fixed-value key to prevent collisions of different object types stored in the same index.