Решение, которое я нашел, это:
public Configuration()
{
AutomaticMigrationsEnabled = false;
}
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public string BreakdownNo { get; private set; }
add-migration [xyz-name]
в консоли диспетчера пакетов, чтобы сгенерировать код миграции, который будет отображаться в папке миграций с заданным именем. Up()
и добавьте собственный SQL так: public override void Up()
{
//AddColumn("dbo.Calls", "BreakdownNo", c => c.String());
Sql("ALTER TABLE dbo.Calls ADD BreakdownNo AS ('BD'+RIGHT('00000'+ CAST(Id AS VARCHAR), 6))");
}
update-database
в PM, и он должен правильно добавить вычисленный столбец. ДАЛЬНЕЙШИЕ ПРИМЕЧАНИЯ: Если вы получите неправильную форму, тогда вам придется вернуться к миграции, выполнив update-database -targetMigration: [name of migration to go back to]
, затем сделайте еще add-migration name
и измените формулу там, закончив обновлением-базой данных. Может быть, лучший способ, но это то, что я нашел и использовал.
Однако я не нашел способ сделать поле еще не сохраненным.