Simulazione di join di contesti incrociati – LINQ / C #

Ecco il problema:

Ho 2 contesti di dati su cui vorrei fare un join. Ora so che LINQ non consente l’accesso da un contesto a un altro, e so che 2 possibili soluzioni potrebbero essere creare un singolo datacontext o avere 2 query separate (che è ciò che sto facendo per ora). Comunque quello che vorrei fare è “simulare” un join.

Ecco cosa ho provato.

using (var _baseDataContext = Instance) { var query = from a in _baseDataContext.Account.ACCOUNTs where a.STR_ACCOUNT_NUMBER.ToString() == accountID join app in _baseDataContext.Account.APPLICATIONs on a.GUID_ACCOUNT_ID equals app.GUID_ACCOUNT join l in GetLoans() on app.GUID_APPLICATION equals l.GUID_APPLICATION select l.GUID_LOAN; return query.Count() > 0 ? query.First() : Guid.Empty; } private static IQueryable GetLoans() { using (var _baseDataContext = Instance) { return (from l in _baseDataContext.Loan.LOANs select l).AsQueryable(); } } 

In fase di esecuzione ottengo è

System.InvalidOperationException: la query contiene riferimenti a elementi definiti in un contesto di dati diverso

MODIFICARE:

Soluzione di lavoro:

 using (var _baseDataContext = Instance) { var query = from a in _baseDataContext.Account.ACCOUNTs where a.STR_ACCOUNT_NUMBER.ToString() == accountID join app in _baseDataContext.Account.APPLICATIONs on a.GUID_ACCOUNT_ID equals app.GUID_ACCOUNT join l in GetLoans() on app.GUID_APPLICATION equals l.GUID_APPLICATION select l.GUID_LOAN; return (query.Count() > 0) ? query.First() : Guid.Empty; } private static IEnumerable GetLoans() { using (var _baseDataContext = Instance) { return (from l in _baseDataContext.Loan.LOANs select l).AsQueryable(); } }