Sto lavorando con un sistema che utilizza prima il codice EF e vorrei usare un numero di colonne sparse di SQL Server su una tabella. La mia soluzione attuale è di eliminare la tabella creata da EF e riaggiungerla tramite uno script durante l'inizializzazione del database. È qualcosa che può essere configurato con l'API Fluent in una classe ereditata da EntityTypeConfiguration o altri mezzi?Come impostare la colonna del database come "Sparse" quando si utilizza l'API First Fluent EF Code?
Q
Come impostare la colonna del database come "Sparse" quando si utilizza l'API First Fluent EF Code?
6
A
risposta
3
Se si utilizza Entity Frameworks migrazioni, è possibile emettere un'istruzione SQL come questo nel metodo Up per la migrazione che aggiunge la colonna di tipo sparse:
Sql("alter table TableName alter column ColumnName int sparse");
Anche se non si utilizza le migrazioni, uno qualsiasi -time esecuzione di dbContext.Database.ExecuteSqlCommand
con lo stesso SQL funzionerà.
In alcun modo è bello come se fosse possibile configurare il tipo in modo esplicito tramite EF, ma sono comunque meglio che eliminare e sostituire l'intera tabella.
Non l'ho provato ma cosa succede se si utilizza '.HasColumnType (" INT SPARSE ")'? –
@LadislavMrnka Ho provato .HasColumnType ("INT SPARSE") e ha gettato '(182,6): errore 0040: Il tipo int sparse non è qualificato con uno spazio dei nomi o un alias. Solo i tipi primitivi possono essere usati senza qualificazione. Grazie per l'idea. – cResults
Beh, probabilmente significa che le colonne sparse non sono supportate. –