Я немного удивлен, что не нашел никакой информации по следующему вопросу, поэтому прошу прощения, если я пропустил это где-то в документах. Использование SQL Server (локально и в Azure 2016) и кода EFCore Сначала мы пытаемся создать столбец вычисляемой таблицы с постоянным значением. Создание столбца работает нормально, но я понятия не имею, как сохранить значение. Вот что мы делаем:
modelBuilder.Entity<SomeClass>(entity =>
{
entity.Property(p => p.Checksum)
.HasComputedColumnSql("(checksum([FirstColumnName], [SecondColumnName]))");
});
А вот что мы хотели бы получить в T-SQL:
CREATE TABLE [dbo].[SomeClass]
(
[FirstColumnName] [NVARCHAR](10)
, [SecondColumnName] [NVARCHAR](10)
, [Checksum] AS (CHECKSUM([FirstColumnName], [SecondColumnName])) PERSISTED
);
Кто-нибудь может указать мне правильное направление?
Заранее спасибо, Тоби
ОБНОВЛЕНИЕ: Основываясь на хорошей идее @ jeroen-mostert, я также попытался просто пропустить строку PERSISTED
как часть формулы:
modelBuilder.Entity<SomeClass>(entity =>
{
entity.Property(p => p.Checksum)
.HasComputedColumnSql("(checksum([FirstColumnName], [SecondColumnName]) PERSISTED)");
});
А также за скобками:
modelBuilder.Entity<SomeClass>(entity =>
{
entity.Property(p => p.Checksum)
.HasComputedColumnSql("(checksum([FirstColumnName], [SecondColumnName])) PERSISTED");
});
Однако, как ни удивительно, вычисляемый столбец все еще генерируется с Is Persisted = No
, поэтому строка PERSISTED
, похоже, просто игнорируется.