2012-04-12 12 views
6

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?

+0

Non l'ho provato ma cosa succede se si utilizza '.HasColumnType (" INT SPARSE ")'? –

+1

@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

+0

Beh, probabilmente significa che le colonne sparse non sono supportate. –

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.

Problemi correlati