I am after a 100% .NET ORM DB library that allows me to store objects in it. Some of my requirements are:
- Free and (preferably) open-source (will consider closed source if supported by large organization such as Microsoft).
- Ability to store "small" amounts of information (say max 100mb in size).
- Portable (or potentially portable) across Desktop platforms such as Linux and MacOS. (For example, it utilizes .NET Core or Mono).
- Self-contained and light-weight. i.e. No complex package inclusions and/or servers to run.
- (Ideally) No requirement to modify existing classes except for perhaps adding meta tags. Any requirement to subclass a "PersistentObject" class would immediately exclude that option.
- Easy maintenance of object/field mappings (ideally no XML).
- Actively maintained and well documented.
- Ability to view/edit the tables in the event data needs to be managed ad-hoc.
- (Ideally) Editable via an external app (for the purposes of easy database updates and fixing incorrect data).
Obviously there are other questions out there that are similar however many answers are now dated. Many new technologies are now on offer from the likes of Microsoft and other open-source projects.
I'm looking for some guidance as to what the options might be given the above-mentioned requirements. I have obviously done some Googling on the topic and come across various potential solutions such as NHibernate, Dapper and the like but having no hands-on experience with them means that I am not aware of any pros and cons of each solution and whether there's any "gotchas" that I'll encounter somewhere down the track Any help is much appreciated.