Il DbContext
della configurazione di Entity Framework della mia applicazione (che chiamerò ApplicationContext
, il nome del nostro tipo derivato) contiene classi per tutte le tabelle nel nostro database SQL Server, piuttosto che averle distribuite su più classi di DbContext
. Uno dei problemi in cui ci siamo imbattuti è, poiché EF usa la reflection per mappare le classi di entità alle loro controparti tabella / vista, tutte quelle classi devono essere nello stesso spazio dei nomi di ApplicationContext
(se questo non è corretto, si prega di lasciare lo so).
Di conseguenza, quando due tabelle SQL in schemi diversi condividono lo stesso nome, la denominazione delle classi EF diventa un problema.
Diciamo che ho due tabelle: FranchisorSetup.ProposalTextBlocks
e ProposalManagement.ProposalTextBlocks
. A causa della limitazione dell'EF che ho menzionato in precedenza, entrambe le classi di entità devono esistere nello stesso spazio dei nomi se devono essere entrambe parte di ApplicationContext
.
La mia definizione di classe EF potrebbe essere simile a questa:
namespace MyApp.DAL.EF
{
[Table("FranchisorSetup.ProposalTextBlocks")]
public class ProposalTextBlock { // class definition }
}
Funziona bene per una tabella, ma la mia seconda tabella, ProposalManagement.ProposalTextBlocks
, anche deve essere chiamata ProposalTextBlock
. Questo mi darà un errore del compilatore, dato che il nome della classe è già stato preso dalla prima tabella.
L'utilizzo di un diverso DbContext
per ogni schema risolverebbe questo particolare problema, ma creerebbe una miriade di altri. Qual è un modo standard per risolvere questo problema?