Ho un database SqlServer Compact Edition che contiene 2 tabelle.Posso avere 2 diversi contesti EntityFramework che condividono un singolo database SqlServer Compact?
Per ciascuna di queste tabelle, ho una classe di contesto derivata da DbContext
che viene utilizzata dall'applicazione per accedere alla tabella.
Per mantenere i diversi componenti dell'applicazione disaccoppiati, non posso avere una classe di contesto che abbia le proprietà DbSet
per entrambe le tabelle. Piuttosto, ho bisogno di avere 2 diverse classi di contesto, ognuna di esse deve essere completamente inconsapevole dell'altro e dei suoi dati.
Sto utilizzando l'approccio code-first, il mio codice definisce entità e modello e ho lasciato che Entity Framework creasse il database per me.
Il mio problema è: come posso ancora consentire a Entity Framework di creare automaticamente il database e le tabelle per l'inizializzazione del contesto, ma i contesti 2 condividono lo stesso database e la stessa connessione?
In questo momento ciò che ottengo è il primo contesto crea correttamente il database e la tabella in essa, ma quando cerco di creare il secondo contesto, io sono sempre, non sorprende il seguente errore:
The model backing the 'SomeObjectContext' context has changed since the database
was created. Either manually delete/update the database, or call Database.SetInitializer
with an IDatabaseInitializer instance. For example, the DropCreateDatabaseIfModelChanges
strategy will automatically delete and recreate the database, and optionally seed it with
new data.
Nessuno degli IDatabaseInitializer
disponibili è appropriato per me, perché non desidero che l'intero database venga eliminato quando viene creato il secondo contesto. Voglio solo la tabella del secondo contesto da creare nel database esistente.
Qualsiasi consiglio su come risolvere questo sarebbe apprezzato.
Grazie
Diventa problematico in ambiente come Sql Azure dove ti viene addebitato il costo per database ... – Clement