Uso valori di tabella funzioni definite dall'utente
Tabella funzione a valori sono disponibili solo in NET 4.5 Beta (e non disponibile nel primo codice). Usarli non ti aiuterà ancora perché dovrai utilizzare la funzione in ogni query LINQ, quindi è come usare la clausola where.
Utilizzo di stored procedure (ma non lo facciamo veramente vogliamo, come stiamo usando un ORM per evitare di farlo)
può essere utile per alcune query complesse speciali ma in generale è non quello che vuoi
Alcuni come modificare i modelli utilizzati per generare l'SQL per aggiungere una clausola where su ogni istruzione.
Troppo complesso e su un livello completamente diverso di astrazione.
Alcuni come modificare i modelli utilizzati per generare il LINQ nei controller (possiamo utilizzare MVC).
Vicino alla soluzione ideale. Hai semplicemente bisogno di avvolgere l'accesso alla vostra entità impostare in qualche codice che sarà simile:
public class MultiTenantAccess<T> where T : IMultitenant
{
private IDbSet<T> set;
...
public IQueryable<T> GetQuery(int tenantID)
{
return set.Where(e => e.TenantID == tenantID);
}
}
A volte questo è fondamentale per qualcosa chiamato repository generico, ma in realtà è solo un wrapper per EF set. Utilizzerai sempre GetQuery
per interrogare l'archivio dati invece di utilizzare direttamente DbSet
.
fonte
2012-03-06 16:39:36
Ottima risposta, grazie @Ladislav. –
Ciao @Ladislav Ho problemi a visualizzare cosa dovrebbe contenere IMultitenant, hai un momento libero che potresti elaborare?Grazie :-) –
In realtà solo a pensare, suppongo che IMultitenant contenga TenantId? Sono sulla buona strada? –