Я использую EF6 для хранения экземпляров класса report
в моей базе данных. База данных уже содержит данные. Скажем, я хотел бы добавить свойство report
,Перенос кода: как установить значение по умолчанию для нового свойства?
public class report {
// ... some previous properties
// ... new property:
public string newProperty{ get; set; }
}
Теперь, если я иду в консоль пакет-менеджера и выполнить
add-migration Report-added-newProperty
update-database
я получить файл в папку «/ Миграции» Добавление newProperty
столбец к таблице. Это прекрасно работает. Однако в старых элементах базы данных значение для newProperty
теперь является пустой строкой. Но я хочу, чтобы это было, например, «старое».
Итак, мой вопрос: как установить значения по умолчанию для новых свойств (любого типа) в сценарии миграции (или в другом месте)?
Было бы хорошо, если он правильно вытащил в [DefaultValue (хуг)] атрибута, как это определено в коде первой модели. Вместо того, чтобы помнить, какие столбцы нужны, каждый раз при добавлении-миграции; после чего необходимо отредактировать сгенерированный файл, а затем нормальный запуск базы данных обновлений для этого измененного файла. Интересно, можно ли переопределить это неразумное поведение .... Я не могу поверить, что никто не улучшил это. Разумеется, я не единственный, кто разочарован этим с помощью модели AspNet Identity по умолчанию ... LockoutEnabled, EmailConfirmed, AccessFailedCount. все hardcoded, все проблемы – Barry
Это не похоже на работу с MySQL-EF. «defaultValue» не устанавливает значение, а «defaultValueSql» создает исключение («геометрия текста блобера или столбец json не могут иметь значение по умолчанию») ... единственное обходное решение - использовать raw SQL. :( – Efrain