Sto lavorando a un'app che utilizzerà lo stesso schema di database su più database. Per questo motivo, ho creato un database chiamato MyTemplate
. Quando viene creato un nuovo utente, avranno la propria istanza del database. Quindi, verrà creato un database chiamato qualcosa come MyTemplate_[UserName]
. Quando un utente accede, ho bisogno di indirizzare le loro query al loro database. Per questo motivo, so che ho bisogno di impostare la stringa di connessione in fase di esecuzione. Il mio problema è che voglio anche usare Entity Framework.Setup Entity Framework per la stringa di connessione dinamica
Attualmente, ho creato un nuovo .edmx utilizzando MyTemplate come origine. Pensavo di essere in grado di aggiornare il codice e impostare la stringa di connessione lì. Sfortunatamente, non riesco a capire come impostarlo. Il costruttore di TemplateEntities non ha un sovraccarico che mi consente di passare una stringa di connessione. Ho notato che TemplateEntities derivato da DbContext, non penso che questo sarebbe il problema.
string connectionString = GetUsersConnectionString();
using (TemplateEntities entities = new TemplateEntities())
{
TemplateEntity entity = new TemplateEntity();
// Save to the database
entities.TemplateEntity.Add(entity);
entities.SaveChanges();
}
Sto creando lo .edmx
in modo errato? O mi manca qualcosa del tutto? Tutto ciò che Google mostra è un sovraccarico che dovrebbe consentire l'inoltro di una stringa di connessione. Tuttavia, non è disponibile tale sovraccarico.
Quando si esegue questa operazione, viene visualizzato un errore che dice: "oggetto" non contiene un costruttore che accetta 1 argomenti. Che cosa sto facendo di sbagliato? – user70192
La definizione di classe parziale con il nuovo costruttore deve essere nello stesso spazio dei nomi della classe generata, altrimenti dichiara una nuova classe (che per impostazione predefinita deriva da 'object') –
+1: Sono perplesso dal motivo per cui questo tipo di costruttore è non nel modello predefinito, ma questa è una soluzione bella e pulita, grazie. – reSPAWNed