Подключайтесь к разным строкам подключения в одном и том же «использовании» - PullRequest
0 голосов
/ 10 января 2019

У меня есть модель с 2 различными списками, такими как:

 public IList<PurchaseOrderPreliminaryDesignModel> DesignList { get; set; } = new List<PurchaseOrderPreliminaryDesignModel>();

        public IList<PurchaseOrderPreliminaryVendorModel> VendorList { get; set; } = new List<PurchaseOrderPreliminaryVendorModel>();
        public PurchaseOrderPreliminaryDesignViewModel AddDesignList(IEnumerable<PurchaseOrderPreliminaryDesignModel> model)
        {
            ((List<PurchaseOrderPreliminaryDesignModel>)DesignList).AddRange(model);
            return this;
        }

        public PurchaseOrderPreliminaryDesignViewModel AddVendorList (IEnumerable<PurchaseOrderPreliminaryVendorModel> model)
        {
            ((List<PurchaseOrderPreliminaryVendorModel>)VendorList).AddRange(model);
            return this;
        }

Итак, я заполняю первый список, используя метод:

  public PurchaseOrderPreliminaryDesignViewModel GetPreliminaryDesignList(string jobNumber)
        {
            try
            {
                PurchaseOrderPreliminaryDesignViewModel DoGetDesigns()
                {
                    using (var connection = _connectionManager.GetOpenConnection(_configuration.GetConnectionString(FirstConnectionString)))
                    {
                        var rModel = new PurchaseOrderPreliminaryDesignViewModel();
                        var designList = connection.Query<PurchaseOrderPreliminaryDesignModel>("[dbo].[usp_PurchaseOrder_Preliminary_Design]", param: new
                        {
                            LegacyKey = jobNumber
                        }, commandType: CommandType.StoredProcedure);

                        rModel.AddDesignList(designList);
                        return rModel;
                    }
                }
                return DoGetDesigns();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

Как видите, я использую FirstConnectionString в своем методе using, поэтому я подключаюсь к одной базе данных, чтобы заполнить первый список. Теперь я хочу заполнить другой список, но с другим подключением.

Мой вопрос: как мне подключиться ко второй строке, чтобы заполнить другой список? Я имею в виду в том же использовании сделать что-то вроде:

var vendorList = connection2.Query<PurchaseOrderPreliminaryVendorModel>("mystore", param: new
                    {
                        Parameter = jobNumber
                    }, commandType: CommandType.StoredProcedure);

тогда взамен используйте как:

rModel.AddDesignList(designList).AddVendorList(vendorList);
                        return rModel;

Как мне этого достичь? Привет

1 Ответ

0 голосов
/ 10 января 2019

public PurchaseOrderPreliminaryDesignViewModel GetPreliminaryDesignList(string jobNumber)
{
    try
    {
        PurchaseOrderPreliminaryDesignViewModel DoGetDesigns()
        {
            using (var connection = _connectionManager.GetOpenConnection(_configuration.GetConnectionString(FirstConnectionString)))
            using (var connection2 = _connectionManager.GetOpenConnection(_configuration.GetConnectionString(SecondConnectionString)))

            {
                var rModel = new PurchaseOrderPreliminaryDesignViewModel();
                var designList = connection.Query<PurchaseOrderPreliminaryDesignModel>("[dbo].[usp_PurchaseOrder_Preliminary_Design]", param: new
                {
                    LegacyKey = jobNumber
                }, commandType: CommandType.StoredProcedure);


                var vendorList = connection2.Query<PurchaseOrderPreliminaryVendorModel>("mystore", param: new
                {
                    Parameter = jobNumber
                }, commandType: CommandType.StoredProcedure);

                rModel.AddDesignList(designList).AddVendorList(vendorList);                 

                return rModel;
            }
        }
        return DoGetDesigns();
    }
    catch (Exception ex)
    {
        throw ex;
    }
}
...