Sto utilizzando EF 6 Code First per il sito Web MVC e il backend di Azure SQL. La pagina SQL di Azure Portal ha un numero di raccomandazioni dell'indice che è possibile applicare con un clic. Tuttavia, non sono sicuro delle implicazioni sul mio modello di dati EF. So che se dovessi aggiungere o rimuovere direttamente tabelle, campi, ecc. Dal database, EF si lamenterà che il mio modello e il DB non sono sincronizzati e le cose vanno male. Che dire degli indici? Se lascio che Azure aggiunga automaticamente un indice raccomandato, EF ne sarà a conoscenza? Causerà problemi?SQL di Azure: l'applicazione delle modifiche di Index Advisor influenzerà le migrazioni EF?
risposta
E gli indici? Se lascio che Azure aggiunga automaticamente un indice raccomandato, EF ne sarà a conoscenza? Sarà causare problemi? ...
EF non ha bisogno di sapere a questo proposito e non causerà alcun problema, la sua Query Optimizer che utilizza tali indici se sono usefull.All raccomandazioni indice dovrebbe essere preso con un pizzico di sale e dovrebbe essere applicato solo dopo un'attenta valutazione.
Nella mia esperienza, sì, le raccomandazioni indice può causare problemi con Entity Framework migrazioni. Non influenzeranno direttamente Entity Framework, ma si connetterà felicemente al database anche se non sa nulla degli indici, ma potresti avere problemi quando arriva il momento di applicare nuove migrazioni.
Ad esempio, si utilizza il portale di Azure per applicare un nuovo indice consigliato a una delle tabelle. In una fase successiva, si rifatta questa tabella e si crea una migrazione che rimuove una colonna. Questa migrazione potrebbe non riuscire quando si tenta di applicarlo, poiché l'indice (di cui EF non è a conoscenza) dipende dalla colonna.
Questo scenario è probabilmente improbabile ma potrebbe farti inciampare dopo aver dimenticato di applicare la raccomandazione. È ancora più un problema se si lascia che Azure applichi automaticamente questi consigli per te. Peggio ancora, probabilmente non colpirete questi problemi fino a quando non provate a distribuirli in produzione: potreste non vederli negli ambienti di staging/test poiché i modelli di utilizzo saranno diversi e quindi le raccomandazioni sugli indici potrebbero essere diverse.