Pluggable framework for .NET to work with popular ORMs (NHibernate, EntityFramework, Linq2Db) and NoSQL storages (MongoDB) using the same syntax. Antler framework is an abstraction over ORM/storage that you like to use.
- To use common syntax to work with the different ORMs/storages to be able easily replace one with another.
- To have very easy "fluent" configuration.
- To be fully pluggable. For example, it should be damn easy to choose which ORM, database or IoC container to use.
- Applications that use the framework should be easily testable (unit & integration tests).
Inserting Teams in a database:
UnitOfWork.Do(uow => { uow.Repo<Team>().Insert(new Team() {Name = "Penguins", Description = "Hockey"}); uow.Repo<Team>().Insert(new Team() {Name = "Capitals", Description = "Hockey"}); uow.Repo<Team>().Insert(new Team() {Name = "Nets", Description = "Basketball"}); });
Querying Teams from a database:
var found = UnitOfWork.Do(uow => uow.Repo<Team>().AsQueryable().Where(t => t.Description == "Hockey"). OrderBy(t => t.Name).ToArray());
For example, let's configure an application to use (NHibernate + Sqlite database) and Castle Windsor container:
var configurator = new AntlerConfigurator(); configurator.UseWindsorContainer().UseStorage(NHibernateStorage.Use. WithDatabaseConfiguration(SQLiteConfiguration.Standard.InMemory()). WithMappings(assemblyWithMappings));
Let's configure an application to use (EntityFramework Code First + SqlServer) and StructureMap container:
var configurator = new AntlerConfigurator(); configurator.UseStructureMapContainer().UseStorage(EntityFrameworkStorage.Use. WithConnectionString(connectionString). WithMappings(assemblyWithMappings));
More info in wiki: https://github.com/SmartElk/Antler/wiki/Wiki-home
Core library: https://www.nuget.org/packages/Antler.Core/
NHibernate adapter: https://www.nuget.org/packages/Antler.NHibernate/
EntityFramework Code First adapter: https://www.nuget.org/packages/Antler.EntityFramework/
Linq2Db adapter: https://www.nuget.org/packages/Antler.Linq2Db/
MongoDb adapter: https://www.nuget.org/packages/Antler.MongoDb/
Windsor adapter: https://www.nuget.org/packages/Antler.Windsor/
StructureMap adapter: https://www.nuget.org/packages/Antler.StructureMap/
Largely based on the great NoSQL framework https://github.com/Kostassoid/Anodyne.