Tavenem.DataStore is a persistence-agnostic repository library. Its intended purpose is to help author libraries which need to interact with a project's data layer, while remaining fully decoupled from persistence choices.
For example: you might want to author a library which can retrieve an object from the data store by ID, modify it, then update the item in the data store. You want your library to be useful to people who use EntityFramework to access a SQL database, people who use Marten to access a PostgreSQL database, or people who work with Azure Cosmos DB.
Tavenem.DataStore provides one possible way to handle this scenario. It provides a simple interface which encapsulates common data operations. As the author of a library, you can accept this interface and use it for all data operations. As a consumer of a library which uses Tavenem.DataStore, you can provide an implementation of this interface designed to work with the particular ORM or data storage SDK you are using in your project.
Tavenem.DataStore is available as a NuGet package.
In addition there are a handful of complementary NuGet packages which provide implementations of IDataStore for various ORMs and data storage SDKs. Currently these include:
- Tavenem.Blazor.IndexedDB (for IndexedDB)
- Tavenem.DataStore.Cosmos (for Azure Cosmos DB)
- Tavenem.DataStore.EntityFramework (for EntityFramework)
- Tavenem.DataStore.Marten (for Marten)
Development on Tavenem.DataStore is ongoing. Major releases with breaking changes are possible on an unpredictable cadence.
Contributions are always welcome. Please carefully read the contributing document to learn more before submitting issues or pull requests.
Please read the code of conduct before engaging with our community, including but not limited to submitting or replying to an issue or pull request.