Разрушение зависимости от Entity Framework - PullRequest
0 голосов
/ 13 апреля 2011

У меня, наконец, очень хорошо структурированный проект.После прочтения луковой архитектуры Фаулера, изучения Ninject для IOC / DI и настройки классов репозитория Psuedo я использую EF 4.1, поэтому DbSet и DbContext по большей части предоставляют репозиторий;Теперь я сталкиваюсь с раздражающей зависимостью от Entity Framework, когда хочу "включить" другие сущности / связанные сущности в мой репозиторий.

Есть ли у кого-нибудь какие-либо предложения о том, как сломать эту зависимость?Например, у меня есть сервисный уровень, который выполняет вызовы в Repository. Как только я решу использовать .Include, я привязан к толстой и тяжелой Entity Framework ... Должен ли я пойти с .Join или EF может быть каким-то образом абстрагирован?

1 Ответ

1 голос
/ 13 апреля 2011

У Джули Лерман есть запись в своем блоге, где она показывает метод расширения Include на IQueryable<T>, который позволяет вам использовать Включить в ваш код и не прерывать ваши юнит-тесты:

public static class MyExtensions
{
  public static IQueryable<TSource> Include<TSource>
    (this IQueryable<TSource> source, string path)
  {
    var objectQuery = source as ObjectQuery<TSource>;
    if (objectQuery != null)
    {
      return objectQuery.Include(path);
    }
    return source;
  }
}

Смотрите ее полный пост здесь:
Репозиторий Agile Entity Framework 4, часть 5: IObjectSet и Include

...