Как иметь несколько баз данных в DBContext? - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть несколько похожих баз данных и мое приложение ASP.Net Core 2.2 MVC с EF DBContext, использующим разные строки подключения для каждой базы данных.Я хочу собрать информацию TABLE1 из каждой базы данных вместе через DBContext только в одном запросе.Как мне этого добиться?

public class DBContext : DbContext
{
    private string _dbconnectionstring;

    public DBContext(string cnn)
        : base()
    {
        _dbconnectionstring = cnn;
    }

    public virtual DbSet<TABLE1> Table1 { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.ApplyConfiguration(new Table1Configuration());
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(_dbconnectionstring);
    }
}

1 Ответ

0 голосов
/ 25 февраля 2019

Спасибо всем за ваши ответы.Мне пришлось обновить свои службы, чтобы сделать цикл для каждой БД и накапливать результаты для каждого запроса, что-то вроде этого:

            if (_userService.GetDBName() == "ALL")
        {
            // If Factory selected is ALL, grab all user factories DBName in a list
            var factories = _adm.GetUserFactoriesForCombo(_userService.GetUserId()).Where(f => f.FactoryId > 0);

            // Get all PruchaseOrders from all factories
            List<PurchaseOrders> pos = new List<PurchaseOrders>();
            foreach (var f in factories)
            {
                using (var uow = new OperationsUOW(new OperationsContext(_userService.GetDBContext(f.FactoryDB)), _userService))
                {
                    var npos = uow.PurchaseOrders.GetAll();
                    pos.AddRange(npos);
                }
            }

            return pos;
        }
...