Skip to content

How can I create Repository with amount of DbSet for different tables? #189

Open

Description

@Bork44

Добрый день!

Работаю с базой SQLServer. В ней с десяток разных таблиц, связанных между собой ключами. Все реализовал согласно документации (IRepository, RepositoryBase), все работает, контекст таблицы получаю. Но только одной, а бывают нужны сразу и другие. Каждый раз для каждой таблицы вызывать Storage.GetRepository().All() - слишком громоздко и даже возникают непонятные баги при одновременном переключении контекста и сохранении изменений.
Каким образом я могу получить набор DbSet-ов всех таблиц разом?
Я посмотрел исходники - в них RepositoryBase содержит только одно поле DbSet (естественно - это же generic), а мне бы их несколько разом. Либо как-то переопределить IRepository.SetStorageContext(IStorageContext storageContext) так, чтобы он возвращал мне мой DbContext... но тут я уже запутался что где надо переопределять...
Мне даже не столько нужен сам DbContext, сколько просто набор DbSet-ов для разных таблиц.

Можете подсказать как грамотнее это попробовать сделать или в какую сторону смотреть?

Activity

  1. DmitrySikorsky commented on Mar 16, 2021

    @DmitrySikorsky
    Member

    https://github.com/ExtCore/ExtCore/blob/master/src/ExtCore.Data.EntityFramework/Storage.cs#L22

    Вам доступно это свойство и оно является при использовании EF DbContext.

    Но нет по сути никакого "переключения контекстов" при работе с разными сущностями, там не может быть связанных с этим багов, так как это по сути стандартный сценарий использования DbSet. Мы повсеместно работаем сразу со многими сущностями и никогда не имели подобных проблем.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions