2015-09-12 15 views
6

Prima EF7 ho usato lo snipet seguito per rimuovere le convenzioni:Come configuriamo le convenzioni su Entity Framework 7?

protected override void OnModelCreating(DbModelBuilder builder) 
{ 
     builder.Conventions.Remove<NavigationPropertyNameForeignKeyDiscoveryConvention>(); 
     builder.Conventions.Remove<PrimaryKeyNameForeignKeyDiscoveryConvention>(); 
     builder.Conventions.Remove<PluralizingTableNameConvention>(); 
     builder.Conventions.Remove<PrimaryKeyNameForeignKeyDiscoveryConvention>(); 
     builder.Conventions.Remove<TypeNameForeignKeyDiscoveryConvention>(); 
} 

Come possiamo ottenere lo stesso risultato su Entity Framework 7?

risposta

5

L'API per le convenzioni non è attualmente stabile. Vedi https://github.com/aspnet/EntityFramework/issues/2589.

Può essere fatto, ma è necessario utilizzare l'integrazione delle dipendenze per ignorare il funzionamento interno di come OnModelCreating viene richiamato nel contesto. DbContext utilizza l'iniezione delle dipendenze per trovare un'istanza di ModelSource che fornisce il generatore di modelli (e le convenzioni).

Per modificare l'origine del modello, aggiungere il proprio implementazione in iniezione di dipendenza:

var serviceCollection = new ServiceCollection(); 
    serviceCollection 
     .AddEntityFramework() 
     .AddSqlServer(); 
    serviceCollection.AddSingleton<SqlServerModelSource, MyModelSource>(); 
    var serviceProvider = serviceCollection.BuildServiceProvider(); 

    using(var context = new MyContext(serviceProvider)) 
    { 
     // ... 
    } 

L'implementazione di MyModelSource dovrebbe ignorare ModelSource.CreateConventionSet(). Vedi il original source here

+0

Buono! Grazie! – Minduca

Problemi correlati