⚠ Deprecated: Other
Complete Rewrite
Basic object-relational mapper for MSSQL-Server that is capable of creating your database structure for you and provides basic CRUD functionality.
License
—
Deps
3
Install Size
—
Vulns
✓ 0
Published
Nov 9, 2021
$ dotnet add package NickX.TinyORM.CoreTinyORM is a very simple and basic object relational mapper for MSSQL-Server databases.
NuGet Gallery | NickX.TinyORM.Core 1.0.0
When letting TinyORM auto-create the database structure, the provided user needs correspnding permissions.
// Build SqlConnectionString
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder()
{
DataSource = "yourServer,1433",
InitialCatalog = "yourDatabase",
UserID = "powerUser",
Password = "verySecurePassword"
};
/*
OR for example:
var connectionString = @"Server=yourServer,1433;Database=yourDatabase;User Id=powerUser;Password=verySecurePassword";
*/
// Create ConnectionFactory, true -> create structure
IConFactory connectionFactory = new SqlConFactory(builder.ConnectionString, true);
// Register your persistence models, more on model setup later on
connectionFactory.MappingConfiguration.RegisterType<Foo>();
connectionFactory.MappingConfiguration.RegisterType<Bar>();
// Get CRUD handler
CrudHandler<Foo> foos = new CrudHandler<Foo>(connectionFactory);
// Do Stuff
foreach (Foo foo in foos.Get())
{
Console.WriteLine(foo.ToString());
}
[Table("tbl_foos")] // Custom Table name, if not defined the class name is used
public class Foo
{
[PrimaryKey(DatabaseGenerated.AutoIncrement)] // Is Primary Key & Auto Generate Id (Identity(1,1))
[Column("id")] // Column Name = "id"
public int Id { get; set; }
[Column("name", 50)] // Column Name = "name", Column Length = 50
public string Name { get; set; }
[Column("lastname", 50)] // Column Name = "lastname", Column Lenth = 50
public string Lastname { get; set; }
// Column Name = Property name "DateOfBirth"
public DateTime DateOfBirth { get; set; }
[Column("notes")] // Column Name = "notes", Column Length = default (nvarchar(max))
public string Notes { get; set; }
[Ignore] // Ignored by ORM
public string UnnecessaryNotes { get; set; }
}
// Get CRUD handler for Foo
CrudHandler<Foo> foos = new CrudHandler<Foo>(connectionFactory);
// Get All
IEnumerable<Foo> all = foos.All();
// Get Single by Primary Key
Foo single = foos.Single(19);
// Get Multiple by filter
IEnumerable<Foo> multiple = foos.Multiple(f => f.Firstname == "Foo");
// Get Single by Filter
Foo single = foos.Single(f => f.Id == 19);
// Init new Foo
Foo foo = new Foo()
{
Name = "Foo",
Lastname = "Bar",
DateCreate = DateTime.Now
};
// Get CRUD handler for Foo
CrudHandler<Foo> foos = new CrudHandler<Foo>(connectionFactory);
// Insert & get generated key
object key = foos.Insert(foo);
// Get CRUD handler for Foo
CrudHandler<Foo> foos = new CrudHandler<Foo>(connectionFactory);
// Get a Foo by Primary Key
Foo foo = foos.Get(19);
// Work with Foo & update properties
foo.Name = "NewFoo";
// Update Foo
foos.Update(foo);
// Get CRUD handler for Foo
CrudHandler<Foo> foos = new CrudHandler<Foo>(connectionFactory);
// Delete Foo
foos.Delete(19);
Insert, Update & Delete operations all have events attachted to them.
// Get CRUD handler for Foo
CrudHandler<Foo> foos = new CrudHandler<Foo>(connectionFactory);
// After Insert
foos.OnInsert += (sender, inserted) => {
Console.WriteLine(string.Format(@"Inserted new Foo with Id: {0}", inserted.Id));
};
// After Update
foos.OnUpdate += (sender, inserted, deleted) => {
Console.WriteLine(string.Format(@"Updated Foo (old name: {0} // new name: {1})", deleted.Name, inserted.Name));
};
// After Delete
foos.OnDelete += (sender, deleted) => {
Console.WriteLine(string.Format(@"Deleted Foo with Id: {0}", deleted.Id));
};