понедельник, 17 ноября 2014 г.

Авторегистрируемые в Unity репозитории на .net для EF Code first @habrahabr



Привет. Приступим.

Мотивация



  1. Есть проект с Entity framework (>= 5.0.0.0) code first.

  2. Вы любите IoC, но не любите бесконечные регистрации новых сущностей.

  3. В качестве контейнера используется Unity (или есть возможность потратить 10 минут на допиливание исходников под свой контейнер).

  4. Перспектива написания однотипного кода почему-то отпугивает вас.




Итак, что предлагает эта статья. Вы подключаете 2 nuget-пакета, реализуете для своих Entity простой интерфейс IRetrievableEntity<TEntity, TId> (можно упростить задачу, отнаследовавшись от готового класса Entity<TId>), добавляете в код 2 строки регистрации и получаете на выходе полную независимость от DBContext и возможность резолвить репозитории для каждой IRetrievableEntity-сущности с возможностью построения объектно-ориентированных (типизированных) запросов к этим репозиториям. Только посмотрите:

var employeeRepository = container.Resolve<IRepository<Emloyee, int>>();
var employees = employeeRepository.Get(q =>
{
q = q.Filter(e => e.EmploymentDate >= new DateTime(2014, 9, 1));
if(excludeFired)
q = q.Filter(e => !e.Fired);
q = q.Include(e => e.Department, p => p.Department.Chief)
.OrderBy(p => p.FirstName);
});




Как быстро начать использовать


из коробки



via Хабрахабр / Интересные / Тематические публикации http://ift.tt/1uiJPMZ

Комментариев нет:

Отправить комментарий