Sto lavorando a un sito in cui vorremmo che lo schema fosse il differenziatore tra i progetti e nel farlo, assicurando le cose tra i progetti.
Ho avuto un po 'di fortuna con questo utilizzando il metodo HasDefaultSchema
in OnModelCreating
nel mio contesto di dati, ma anche dover fare il mio DbContext
implementare IDbModelCacheKeyProvider
e implementare la proprietà CacheKey
. Ha funzionato prima. Sfortunatamente, questa soluzione sembra essere incoerente e attualmente sto riscontrando un problema in cui sto cercando di aggiornare il mio modello, ma ricevendo il seguente errore durante l'esecuzione di Update-Database
:
The specified schema name "dbo" either does not exist or you do not have permission to use it.
La stringa di connessione ha un utente che ha solo accesso al mio schema xma
, quindi questo errore ha senso se avessi cambiato lo schema, ma puoi vedere nel codice seguente, non ho:
public class DataContext : DbContext, DbModelCacheKeyProvider
{
public DataContext()
//: base("name=DataContext")
: base("DataContext")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
...
modelBuilder.HasDefaultSchema("xma");
base.OnModelCreating(modelBuilder);
}
public virtual DbSet<Article> Articles { get; set; }
public virtual DbSet<Author> Authors { get; set; }
...
public string CacheKey
{
get { return Utility.SchemaPrefix ?? "xma"; }
}
}
Questo problema si verifica anche con altri membri del team, quindi qualsiasi aiuto sarebbe molto apprezzato.
Grazie
Modifica: ho dimenticato di menzionare, questo sembra essere un problema su un database pulito.
Ho rimosso le modifiche in sospeso al modello ed è stato in grado di eseguire update-database -script
come consigliato da Steve, si scopre che le migrazioni iniziali si basano sullo schema dbo, quindi sono state modificate per un utente più privilegiato ed è stato possibile continuare con ricreare il database. Il mio errore purtroppo.