Как установить столбец базы данных как разреженный при использовании EF Code First Fluent API?

Я работаю с системой, которая сначала использует код EF, и я хотел бы использовать несколько разреженных столбцов SQL Server в таблице. Мое текущее решение состоит в том, чтобы удалить таблицу, созданную EF, и повторно добавить ее с помощью скрипта во время инициализации базы данных. Можно ли это настроить с помощью Fluent API в классе, унаследованном от EntityTypeConfiguration или другими способами?


person cResults    schedule 12.04.2012    source источник
comment
Я не пробовал, но что произойдет, если вы используете .HasColumnType("INT SPARSE")?   -  person Ladislav Mrnka    schedule 12.04.2012
comment
@LadislavMrnka Я попробовал .HasColumnType(INT SPARSE), и он выдал (182,6) : error 0040: The Type int sparse is not qualified with a namespace or alias. Only primitive types can be used without qualification. Спасибо за идею.   -  person cResults    schedule 03.01.2013
comment
Ну, это, вероятно, означает, что разреженные столбцы не поддерживаются.   -  person Ladislav Mrnka    schedule 03.01.2013
comment
Или имя столбца экранировано без вашего ведома.   -  person Allen Clark Copeland Jr    schedule 31.03.2014


Ответы (1)


Если вы используете миграцию Entity Frameworks, вы можете создать инструкцию SQL, подобную этой, в файле Up для миграции, добавляющей разреженный столбец:

Sql("alter table TableName alter column ColumnName int sparse");

Даже если вы не используете миграции, любое однократное выполнение dbContext.Database.ExecuteSqlCommand с тем же SQL будет работать.

Ни один из способов не так хорош, как если бы вы могли явно настроить тип через EF, но они все же лучше, чем удаление и замена всей таблицы.

person Edward Brey    schedule 17.04.2013