кросс-контекстное соединение asp. net core - PullRequest
1 голос
/ 04 февраля 2020

Я делаю проект в ASP. NET Core MVC с Entity Framework Core.

У меня есть две базы данных в качестве контекстов, и мне нужно pu sh, чтобы проиндексировать это SQL :

SELECT 
    * 
FROM 
    db1.table1 AS tpt
JOIN 
    db2.table1 AS ta ON tpt.cIBAN = ta.cIBAN
JOIN
    db2.table2 AS tpa ON ta.nAccountID = tpa.nAccountID 
JOIN
    db2.table3 AS tc ON tc.nClientID = ta.nAccountID
WHERE
    ta.lActive = 1;

Что я сделал до сих пор, это

var query = await (from tpt in context1.table1
                   join ta in context2.table1 on tpt.CIban equals ta.CIban
                   join tpa in context2.table2 on ta.NAccountId equals tpa.NAccountId
                   join tc in context2.table3 on ta.NAccountId equals tc.NClientId
                   where ta.LActive == true
                   select new
                        {
                            tpt.DRegister,
                            tc.CNameOnPaymentCard,
                            tc.NClientId,
                            tpt.CIban,
                            tpt.CCurrency,
                            ta.NCurrency,
                            tpt.DValidityFrom,
                            tpt.DValidityTo,
                            tpt.CNote
                        }).ToListAsync();

Однако это не будет работать, так как я не могу использовать запрос в двух контекстах одновременно.

Был бы очень признателен за любую помощь. Спасибо, это беспокоит меня уже некоторое время ....

РЕДАКТИРОВАТЬ:

Я исправил проблему, разделив запрос на два оператора LINQ, возвращающих списки, а затем объединяя два списка в один список класса. , Не лучшее решение, это отвратительно и медленно. Тем не менее, его работа.

Решение:

var x = context1.table1.ToList();
var y = (from ta in context2.table1
                           join tc in context.table2 on ta.NAccountId 
                           equals tc.NClientId
                           where ta.LActive == true
                           select new {
                                thingsI_NeededToList
                                ...
                           }).ToList();

var xy = from table1 in y
         join table2 in x on table1.CIban equals table2.CIban
         select new ClassINeededToPass
         {
         ClassParameter = table1.parameter
         ...
         };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...