Sto lavorando a un'applicazione Web ASP.NET MVC 4. Sto usando Entity Framework come livello di accesso ai dati, usando il primo approccio al database (file .edmx
).Unione di tabelle da due database utilizzando il framework di entità
Attualmente ho un problema nelle tabelle di join che sono definite all'interno di due database diversi (ad esempio, ho due file .edmx
).
Per esempio se voglio unire le tabelle che sto eseguendo la seguente query: -
public ActionResult AutoComplete(string term)
{
var tech = repository.AllFindTechnolog(term).Take(100);//Call to the first database
var resources = repository.GetResources(tech.Select(a => a.IT360ID.Value).ToArray(), false);//call to the second database
var query = from techItems in tech
join resourcesItems in resources
on techItems.IT360ID.Value equals resourcesItems.RESOURCEID // join based on db2ID
orderby techItems.PartialTag
select new //code goes here
return Json(query, JsonRequestBehavior.AllowGet);
}
avrò due chiamate separate al database, e un join all'interno del server di applicazione, che non è il migliore soluzione orientata alla prestazione. Idealmente i join avverranno completamente all'interno del motore del database.
So che una stored procedure mi consentirà di unire tabelle da database diversi esclusivamente sul server, ma non voglio utilizzare SP perché renderà il mio codice meno gestibile e meno controllabile.
Quindi sto cercando una soluzione in cui posso fare il join usando il framework di entità e creare un singolo join di database?
L'idea principale è che abbiamo scelto di lavorare con Entity Framework come nostro livello di accesso ai dati è che fornisce le seguenti caratteristiche principali: - 1. Il codice di accesso ai dati siano rispettate e testati come parte del tutto applicazione. più testabile e offre tempi di sviluppo rapidi confrontando le stored procedure.2, EF fornisce un livello sopra il database e il nostro prodotto può funzionare su diversi fornitori di database. e come ho già detto che l'unica funzionalità attualmente disponibile che dipende direttamente dal database è una procedura memorizzata per eseguire la ricerca avanzata –
ma se voglio iniziare a creare viste per diverse funzionalità, allora perderò i vantaggi offerti da EF. quindi fammi ricostruire la mia domanda originale è il mio attuale approccio di recuperare i dati relativi dai due database utilizzando due istruzioni SQL separate e quindi unire i dati sul server delle applicazioni considerato un design molto cattivo? Anche se avrò due query separate ma sono meno costose rispetto a una singola istruzione sql join ... –
Potrei avere una soluzione per te, ma ho una domanda: cosa stai selezionando nella tua variabile 'query'? Stai prendendo dati da entrambi i contesti, o solo da uno di essi (ad esempio, prendi solo gli elementi in 'tech' che esistono in' risorse')? – IronMan84