Два дБ-контекста означают два соединения. Вы не можете присоединиться через разные соединения.
1. Загрузка данных в программу
Вы можете загрузить свои данные в свою программу и присоединиться к ней. Имейте в виду, что это опасно для больших наборов данных.
var customers = new Ctx1().Customers.ToList(); // ToList() loads the data into your program
var orders = new Ctx2().Orders.ToList();
// Now we're not in the db anymore. We can do a simple List-Join:
customers.Join(orders, c => c.CustomerId, o => o.CustomerId, (c, o) => new { Customer = c, Order = o });
2. Расширьте свой существующий контекст
Если вы хотите придерживаться одного соединения, вы можете просто расширить свой контекст. Имейте в виду, что вы находитесь в одной транзакции таким образом.
public class FrameworkContext : DbContext
{
public DbSet<Customer> Customers { get; set; }
}
public class ExtendedContext : FrameworkContext
{
public DbSet<Order> Orders { get; set; }
}
Теперь вы можете присоединиться:
var ctx = new ExtendedContext();
var myResult = ctx.customers.Join(ctx.orders, c => c.CustomerId, o => o.CustomerId, (c, o) => new { Customer = c, Order = o });