Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zzzprojects/nmemory
NMemory is a lightweight non-persistent in-memory relational database engine that is purely written in C# and can be hosted by .NET applications.
https://github.com/zzzprojects/nmemory
Last synced: 3 days ago
JSON representation
NMemory is a lightweight non-persistent in-memory relational database engine that is purely written in C# and can be hosted by .NET applications.
- Host: GitHub
- URL: https://github.com/zzzprojects/nmemory
- Owner: zzzprojects
- License: mit
- Created: 2013-06-21T09:19:43.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2024-03-19T14:22:31.000Z (10 months ago)
- Last Synced: 2024-12-24T12:14:49.564Z (10 days ago)
- Language: C#
- Homepage: https://nmemory.net/
- Size: 3.94 MB
- Stars: 234
- Watchers: 13
- Forks: 62
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
## Library Powered By
This library is powered by [Entity Framework Extensions](https://entityframework-extensions.net/?z=github&y=entityframework-plus)
# What's NMemory?
NMemory is a lightweight non-persistent in-memory relational database engine that is purely written in C# and can be hosted by .NET applications. It supports
traditional database features like indexes, foreign key relations, transaction handling and isolation, stored procedures, query optimization.## Getting started
* Install [NuGet package](https://www.nuget.org/packages/NMemory)
* Define the database```csharp
public class Person
{
public int Id { get; set; }public string Name { get; set; }
}public class Group
{
public int Id { get; set; }public string Name { get; set; }
}public class MyDatabase : Database
{
public MyDatabase()
{
var peopleTable = base.Tables.Create(p => p.Id);
var groupTable = base.Tables.Create(g => g.Id);var peopleGroupIdIndex = peopleTable.CreateIndex(
new RedBlackTreeIndexFactory(),
p => p.GroupId);this.Tables.CreateRelation(
groupTable.PrimaryKeyIndex,
peopleGroupIdIndex,
x => x,
x => x);this.People = peopleTable;
this.Groups = groupTable;
}public ITable People { get; private set; }
public ITable Groups { get; private set; }
}
```* Create a database instance and some data
```csharp
MyDatabase db = new MyDatabase();db.Groups.Insert(new Group {
Id = 1,
Name = "Alpha Group" });db.Groups.Insert(new Group {
Id = 2,
Name = "Beta Group" });db.People.Insert(new Person {
Id = 1,
Name = "John Doe",
GroupId = 1,
BirthDay = new DateTime(1966, 4, 12) });
```* Perform queries
```csharp
var query =
from p in db.People
join g in db.Groups on p.GroupId equals g.Id
select new { Name = p.Name, Group = g.Name };
query.ToList()
```* Manipulate data
```csharp
var q = db.Groups.Where(x => x.Name.StartsWith("B"));// Update command
q.Update(x => new Group { Name = x.Name + " (taged)" });// Delete command
q.Delete();
```## Useful links
- [Website](https://nmemory.net/)
- [Documentation](https://nmemory.net/overview)
- [Online Examples](https://nmemory.net/online-examples)## Contribute
The best way to contribute is by **spreading the word** about the library:
- Blog it
- Comment it
- Star it
- Share it
A **HUGE THANKS** for your help.## More Projects
- Projects:
- [EntityFramework Extensions](https://entityframework-extensions.net/)
- [Dapper Plus](https://dapper-plus.net/)
- [C# Eval Expression](https://eval-expression.net/)
- Learn Websites
- [Learn EF Core](https://www.learnentityframeworkcore.com/)
- [Learn Dapper](https://www.learndapper.com/)
- Online Tools:
- [.NET Fiddle](https://dotnetfiddle.net/)
- [SQL Fiddle](https://sqlfiddle.com/)
- [ZZZ Code AI](https://zzzcode.ai/)
- and much more!To view all our free and paid projects, visit our website [ZZZ Projects](https://zzzprojects.com/).