A lightweight .NET data service stack
Nyan is no longer in active development, and is currently in maintenance mode. If you want the same features but for .NET Core, check out Zen.
Not quite. It provides not only ORM but also caching, encryption and RESTful endpoints out of the box with zero setup in some cases. Think of it like a drop-in package set that'll get your data flowing from/to persistent storage to REST endpoints in no time and with minimal effort in most cases.
To have it working straight out of the box with no setup required, add a reference to Nyan.Core.dll
, Nyan.Modules.Cache.Memory.dll
and Nyan.Modules.Data.SQLCompact.dll
. Compile from source, or check NuGet for these packages:
Very complicated example steps aread, you better pay attention:
- Create a class that inherits from the
MicroEntity<>
generic class - Add a
MicroEntitySetup
attribute, and assign a table name - Mark the property you want to use as a unique identifier with the [Key] attribute
C# example:
using Nyan.Core.Modules.Data;
using System;
namespace Test
{
[MicroEntitySetup(TableName = "Users")]
public class User : MicroEntity<User>
{
[Key]
public int id { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public bool isAdmin { get; set; }
public DateTime? BirthDate { get; set; }
}
}
Congratulations! You created a SQL Compact- and memory cache-backed ORM class. A default database was created, together with a table to store entries.
Oh, REST! Right. So, once you decide you want to expose your ORM class data through a REST endpoint, do this:
- Reference
Nyan.Modules.Web.REST
(NuGet); - Implement a class deriving from
MicroEntityWebApiController<>
, and assign a route prefix to it:
[RoutePrefix("users")]
public class UserController : MicroEntityWebApiController<User>
{
public UserController() { }
}
- ...and that's it.
Now run your project, and reach the endpoint you specified. If you're running the sample provided (Nyan.Samples.REST
), you can try the following URLs:
http://localhost/Nyan.Samples.REST/users
[{"id":1,"Name":"Maximus Howell III","Surname":null,"isAdmin":false,"BirthDate":"2002-05-13T00:00:00"},{"id":2,"Name":"Odie Yost","Surname":null,"isAdmin":false,"BirthDate":"1989-04-21T00:00:00"},{"id":3,"Name":"Vincent Pouros","Surname":null,"isAdmin":true,"BirthDate":"2002-02-23T00:00:00"},{"id":4,"Name":"Russel Fadel","Surname":null,(...)
http://localhost/Nyan.Samples.REST/users/1
{"id":1,"Name":"Maximus Howell III","Surname":null,"isAdmin":false,"BirthDate":"2002-05-13T00:00:00"}
http://localhost/Nyan.Samples.REST/users/new
{"id":0,"Name":null,"Surname":null,"isAdmin":false,"BirthDate":null}
The MicroEntity module wraps around Stack Exchange Dapper, an abusively fast IDbConnection interface extender.
REST endpoints are provided via Microsoft WebApi 2.
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
Original contributors from Enterprise Systems at Bucknell University
- Dan Mancusi
- Mark Minisce
- Leo Botinelly
MIT - a permissive free software license originating at the Massachusetts Institute of Technology (MIT), it puts only very limited restriction on reuse and has, therefore, an excellent license compatibility. It permits reuse within proprietary software provided that all copies of the licensed software include a copy of the MIT License terms and the copyright notice.
Check the LICENSE file for more details.