Entity Framework - реализация IDbSet - PullRequest
0 голосов
/ 03 июня 2011

Я хотел бы реализовать IdbSet для предоставления моему DbContext пользовательской реализации, которая по существу будет служить для фильтрации моих данных для текущего пользователя, вошедшего в систему (я работаю над мультитенантным приложением).Общая идея, с которой я собираюсь пойти, очень похожа на этот пост: Может ли DbContext применять политику фильтрации?

Однако мне не ясно, как заставить DbContext "знать" оКак использовать свой собственный класс, который реализует IDbSet.Мне трудно найти документацию по этому вопросу.Любые указатели были бы полезны!

TIA, -jle

1 Ответ

1 голос
/ 03 июня 2011

Я почти уверен, что вы не можете создать собственную реализацию IDbSet и передать ее в платформу сущностей.Такая реализация потеряет все, что связано с EF, который внутренне реализован в DbSet - внутренне я действительно имею в виду, что не существует общедоступного API для его замены.Интерфейс IDbSet предоставляется не потому, что он должен создавать ваши собственные наборы, а потому, что он допускает макеты наборов при модульном тестировании приложения.Единственный способ расширить функциональность - это:

  • Наследование DbSet, но я боюсь, что это не поможет вам, потому что методы / свойства не будут помечены как virtual.
  • Создание пользовательской IDbSet реализации, которая обернет DbSet.Это выглядит как лучший шанс, но вы все равно можете обнаружить, что DbContext не нравится ваша новая реализация.Я дал эту очень быструю попытку, но мне не удалось.Моя реализация работала для сохранения, но не для запросов.
...