Offering you a complete abstraction of the UnitOfWork-Pattern with the basic CRUD-Operations, the Repository Pattern and extended functions like CustomRepositores all in one small lib. Made for the Entity Framework.
C#
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
OfferingSolutions.UnitOfWork.Sample
OfferingSolutions.UnitOfWork
OfferingSolutions.UoW.Tests
.gitattributes
.gitignore
OfferingSolutions.UnitOfWork.sln
README.md

README.md

Repository Pattern // UnitOfWork // Entity Framework

NuGet

Offering you a complete abstraction of the UnitOfWork-Pattern with the basic CRUD-Operations, the Repository Pattern and extended functions like CustomRepositores all in one small lib. Made for the Entity Framework.

See the Sample-Project how this works.

See Nuget to load this package:

https://www.nuget.org/packages/OfferingSolutions.UnitOfWork.Structure/

Install-Package OfferingSolutions.UnitOfWork.Structure

Have fun. Hope this helps :)

using (IOsUnitOfWorkContext unitOfWorkContext = new OsUnitOfWorkContext(new DatabaseContext()))
{
    Person person = new Person() { Age = 28, Name = "Fabian" };

    //Adding a new Entity, for example "Person"
    unitOfWorkContext.Add(person);

    //Savechanges
    unitOfWorkContext.Save();

    //or...
    unitOfWorkContext.SaveASync();

    // Get all Persons
    List allPersons = unitOfWorkContext.GetAll().ToList();

    // Get all Persons with the age of 35
    List allPersonsOnAge35 = unitOfWorkContext.GetAll(x => x.Age == 35).ToList();

    // Get all Persons with the age of 35 ordered by Name
    List allPersonsOnAge35Ordered = unitOfWorkContext.GetAll(x => x.Age == 35, orderBy: q => q.OrderBy(d => d.Name)).ToList();

    // Get all Persons with the age of 35 ordered by Name and include its properties
    List allPersonsOnAge35OrderedAndWithThings = unitOfWorkContext.GetAll(
        x => x.Age == 35,
        orderBy: q => q.OrderBy(d => d.Name),
        includeProperties: "Things").ToList();

    // Get all Persons and include its properties
    List allPersonsWithThings = unitOfWorkContext.GetAll(includeProperties: "Things").ToList();

    // Find a single Person with a specific name
    Person findBy = unitOfWorkContext.GetSingle(x => x.Name == "Fabian");

    // Find a single Person with a specific name and include its siblings
    Person findByWithThings = unitOfWorkContext.GetSingle(x => x.Name == "Fabian", includeProperties: "Things");

    // Find a person by id 
    unitOfWorkContext.GetSingleById(6);

    //Update an existing person
    unitOfWorkContext.Update(person);

    //Add or Update a Person
    unitOfWorkContext.AddOrUpdate(person);

    //Deleting a Person by Id or by entity
    //unitOfWorkContext.Delete(person.Id);
    unitOfWorkContext.Delete(person);
}

or you can make repositories for each entity

DatabaseContext databaseContext = new DatabaseContext();
IPersonRepository personRepository = new PersonRepository(databaseContext);
IThingRepository thingRepository = new ThingRepository(databaseContext);

personRepository.Add(new Person());
thingRepository.Add(new Thing());

personRepository.Save();

List persons = await personRepository.GetAllASync().Result.ToListAsync();

Console.WriteLine(persons.Count);
personRepository.MyNewFunction(6);
await personRepository.SaveASync();
List allASync = await personRepository.GetAllASync().Result.ToListAsync();

thingRepository.Dispose();
personRepository.Dispose();