Bene, la domanda è abbastanza chiara. È possibile creare gli indici spaziali utilizzando l'API fluente di Entity Framework 6.1?Come creare un indice spaziale usando l'API fluente EF 6.1
risposta
Risposta breve - No, non lo è. Ho visto questo riferimento tangenzialmente in blogs e non ho trovato esempi concreti di implementazione. Sembra essere correlato al fatto che gli indici spaziali sono indici filtrati, che non sono supportati in Entity Framework.
Come supporto per la mia risposta ho costruito un'app console POC con la versione più recente di Entity Framework (6.1). Ho preso le seguenti operazioni
- creato un modello che ha avuto una proprietà di tipo DbGeography
- abilitati migrazioni automatiche
Ran Update-Database verbose assicurare la migrazione con l'aggiunta di un indice è stato eseguito. L'indice utilizzato il seguente:
modelBuilder.Entity<LocationEntity>().Property(t => t.Coordinates).HasColumnAnnotation("Index", new IndexAnnotation(new IndexAttribute("ix_locationentity_coordinates")));
Non indici sono stati creati, ma nessuno dei due ha fatto l'incidente app. Potrei provare le permutazioni su questo, ma il mio esempio sembra seguire la convenzione del framework di entità: Official Fluent Documentation
L'unico modo che conosco per farlo è attraverso una migrazione "personalizzata". In EF6, aggiungo una migrazione (nell'esempio sotto è chiamata "V1"), risultante in una nuova migrazione con metodi vuoti Up() e Down(). È quindi possibile aggiungere comandi SQL personalizzati a questi metodi prima di eseguire update-database per inserirli nel flusso di migrazione "normale".
È possibile modificare una migrazione esistente per aggiungere queste funzionalità, ma in pratica preferisco mantenere separate le mie migrazioni automaticamente da quelle personalizzate.
public partial class V1 : DbMigration
{
public override void Up()
{
Sql("CREATE SPATIAL INDEX [IX_UserProfileAddresses_Location] ON [dbo].[UserProfileAddresses](Location)");
}
public override void Down()
{
Sql("DROP INDEX [IX_UserProfileAddresses_Location] ON [dbo].[UserProfileAddresses]");
}
}
Non un metodo ideale, ma non troppo male dal momento che seguono il modello "normale" migrazioni per EF.
- 1. EF 6.1 Unico Nullable Indice
- 2. Indice spaziale per coordinate geografiche?
- 3. EF 6.1 Differenza tra ProxyCreationEnabled e LazyLoadingEnabled
- 4. Indice spaziale geografico in mongodb con node.js
- 5. Ho bisogno di un indice spaziale nel mio database?
- 6. SQL Ottimizzazione di un indice spaziale per punti geografici localizzati
- 7. Mappatura fluente EF core alle proprietà dell'oggetto interno
- 8. Posso creare un indice "Covering, Spatial" in SQL Server 2008?
- 9. EF Codice Prima - API fluente (WithRequiredDependent e WithRequiredPrincipal)
- 10. Generazione di una vista SQL dal codice EF 6.1 prima
- 11. errore quando si utilizza indice spaziale in SQL Server
- 12. Aggiungi indice nel modello EF Primo modello
- 13. Come posso creare un indice su vertica?
- 14. Come creare un indice di Amazon Redshift
- 15. Come creare un indice annidato in MongoDB?
- 16. Indicizzazione spaziale
- 17. Come utilizzare le chiavi esterne e un indice spaziale all'interno di una tabella MySQL?
- 18. Come recuperare un indice di un NSArray usando un NSPredicate?
- 19. Architettura spaziale?
- 20. Hibernate spaziale 5 - GeometryType
- 21. ANTLR: rientranza spaziale?
- 22. Come creare un indice di testo per la ricerca '% abc%'?
- 23. Errore di codifica durante l'utilizzo dell'autenticazione Devd di LAPI
- 24. Creare un indice composito con dati associati?
- 25. creare un indice senza bloccare il DB
- 26. Corrispondenza spaziale di dataset grandi
- 27. entitiy quadro, aggiungi indice colonna di tipo complesso
- 28. Filtro spaziale Fourier
- 29. Genera file EAR compatibile con Websphere 6.1 usando Maven
- 30. Come aggiungere una chiave univoca composita usando EF 6 Fluent Api?