ORM-Micro
Easiest and fastest Micro ORM, you've got the queries, you've got the objects, take the best of two worlds !
Now available on NuGet by searching ORMMicro
Why another Micro ORM ?
Like many others dev, I've got the competences in writing database requests. So why should I learn and use another language (LinQ for example), when i can write and optimize it myself ?
The only thing I want is focus on datas, instead of loosing time on plumbing and transformations ;)
How to use it ?
Just reference both the main library and the provider-based library you want to use on your project. For more information, open the samples, and learn by experiment.
To quickly understand, just read that sample :
// We have a some Models for working with Languages and Users
public class LanguageModel
{
public Guid LanguageId { get; set; }
public string LanguageName { get; set; }
public string LanguageCulture { get; set; }
}
public class UserModel
{
public int Id { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public DateTime BirthDate { get; set; }
public double Money { get; set; }
public Guid LanguageId { get; set; }
}
// We write the request, and get the objects from it automagically
public override List<LanguageModel> GetLanguages()
{
List<LanguageModel> languages;
var languageQuery = @"
select l.lanId as LanguageId,
l.lanName as LanguageName,
l.lanCulture as LanguageCulture
from Language l (nolock)
where l.lanCulture like @SearchedCulture
order by l.lanName";
using (var context = new DataContext(ConfigurationManager.ConnectionStrings["YourConnString"].ConnectionString))
{
// You can add parameters by using dynamic DataContextBag :
context.DataContextBag.SearchedCulture = "%en%";
languages = context.ReadEntities<LanguageModel>(languageQuery).ToList();
}
return languages;
}
// We write the insert, and inject parameters automagically
public int CreateUserTest()
{
var user = new UserModel {Name = "John Smith", Address = "135 Street Avenue, City, State", BirthDate = new DateTime(1950, 1, 1), Money = 12056.25};
const string createStatement = @"
insert into User(UserFirstName, UserLastName, UserAddress, UserBirthDate, UserAccountMoney)
values(@FirstName, @LastName, @User.Address, @User.BirthDate, @User.Money)";
object userIdCreated;
using (var context = new DataContext(_connectionString))
{
context.DataContextBag.FirstName = "John";
context.DataContextBag.LastName = "Smith";
context.DataContextBag.User = user;
context.CreateEntity(createStatement, out userIdCreated);
}
return userIdCreated;
}
You've got many ideas ?
Cool ! Please feel free to comment, add some providers, correct some misspellings, feed the dog... You'll always be welcome ;)