erstellen Nun, die Frage ist klar genug. Ist es möglich, räumliche Indizes mit der flüssigen API von Entity Framework 6.1 zu erstellen?Wie Raum Index mit EF 6.1 fließend API
Antwort
Kurze Antwort- Nein, ist es nicht. Ich habe gesehen, dass dies durch blogs tangential referenziert wurde, und habe keine konkreten Beispiele für die Implementierung gefunden. Es scheint damit in Zusammenhang zu stehen, dass räumliche Indizes gefilterte Indizes sind, die in Entity Framework nicht unterstützt werden.
Als Unterstützung für meine Antwort habe ich eine POC-Konsolen-App mit der neuesten Version von Entity Framework (6.1) erstellt. Ich nahm die folgenden Schritte
- ein Modell geschaffen, das eine Eigenschaft des Typs hatte DbGeography
- Aktiviert automatische Migrationen
Ran-Update-Datenbank -verbose Migration mit dem Zusatz eines Index Versicherung durchgeführt wurde. Der Index verwendet die folgenden:
modelBuilder.Entity<LocationEntity>().Property(t => t.Coordinates).HasColumnAnnotation("Index", new IndexAnnotation(new IndexAttribute("ix_locationentity_coordinates")));
keine Indizes erstellt wurden, aber auch nicht die App zum Absturz bringen. Ich könnte versuchen, Permutationen auf diese, aber mein Beispiel scheint die Konvention der Entität Rahmen zu folgen: Official Fluent Documentation
Die einzige Möglichkeit, die ich weiß, dies zu tun, ist durch eine "benutzerdefinierte" Migration. In EF6 füge ich eine Migration hinzu (im Beispiel darunter heißt sie "V1"), was zu einer neuen Migration mit leeren Up() und Down() Methoden führt. Sie können diesen Methoden dann benutzerdefinierte SQL-Befehle hinzufügen, bevor Sie update-database ausführen, um diese in den "normalen" Migrationsablauf zu versetzen.
Es ist möglich, eine vorhandene Migration zu ändern, um diese Funktionen hinzuzufügen, aber ich bevorzuge in der Praxis, meine automatisch gerüsteten Migrationen getrennt von meinen benutzerdefinierten zu halten.
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]");
}
}
Keine ideale Methode, aber nicht so schlecht, da es dem "normalen" Migrationsmuster für EF folgt.
- 1. Fließend NHibnernate HasManyToMany mit Index
- 2. EF 6.1 Unterschied zwischen ProxyCreationEnabled und LazyLoadingEnabled
- 3. Fixing Httpclient Warnung mit fließend API
- 4. Upgrade Entity Framework auf 6.1 - Index existiert bereits Fehler
- 5. EF 6.1 Code zuerst von der Datenbank - Wie man beitritt
- 6. eine Schwierigkeit mit EF Fluent API
- 7. Raum in div mit z-index
- 8. Curry JavaScript-Funktion für fließend API
- 9. Eine intelligentere Entity Framework CodeFirst fließend API
- 10. LINQ-Abfrage benutzerdefiniertes best practice in EF Objekt 6.1
- 11. Erstellen einer SQL-Ansicht aus EF 6.1 Code zuerst
- 12. Entity Framework 6.1 - Index mit INCLUDE-Anweisung erstellen
- 13. Methodennamen mit fließend Schnittstelle
- 14. EF Code Erste fließende API definiere eindeutige Bedingung
- 15. Viele zu vielen (Join-Tabelle) Beziehung mit der gleichen Entität mit CodeFirst oder fließend API?
- 16. Karte Tabellen fließend api in asp.net MVC5 EF6 mit?
- 17. EF Foreign Key mit Fluent API
- 18. Index im EF-Modell hinzufügen Erstes Design
- 19. wie setzen generate_statistics = true mit fließend nhibernate
- 20. Wie spricht man fließend mit Apache-Komponenten?
- 21. kippt hinzufügen mit fließend in einer Eins-zu-Eins-Einstellung - ef codeFirst
- 22. Entity Framework Filter Index
- 23. Wie verknüpfe ich Ströme fließend?
- 24. Try-Catch mit fließend Ausdrücke
- 25. EF-Code Erste Fluent API der Fremdschlüsseleigenschaft
- 26. fließend nhibernate r1.0 fließend mapping deaktivieren lazy load
- 27. VB2008 mit MySQLConnector .net 6.1
- 28. Wie erhalten Sie eine Web-API odatamodelbuilder mit EF fließenden API-Mappings arbeiten
- 29. C# fließend nhibernate
- 30. EF Fließende API Viele zu viele mit unterschiedlichen ID-Feldnamen