Я делаю проект в 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
...
};