Упрощенный пример: у меня есть вычисляемый столбец, определенный как поле в моей таблице SQL-сервера Azure.
CREATE TABLE [dbo].[MyTable]
(
[Id] INT NOT NULL PRIMARY KEY IDENTITY,
[CancelledOn] DATETIME NULL,
[MyComputedColumn] AS CASE WHEN ([CancelledOn] IS NOT NULL) THEN 'Cancelled' ELSE 'Draft' END
)
Но когда я генерирую первую модель ADO.NET Entity Data Model в Visual Studio 2017, свойство генерируется с атрибутами [Required]
и [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
.
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
[Required]
[StringLength(19)]
public string MyComputedColumn { get; set; }
Конечно, это вызывает ошибки проверки сущности и другие проблемы.
Почему EF помечает это свойство как [Required]
, когда оно также знает, что это вычисляемое поле?
Я понимаю, что могу просто удалить атрибут, но я ищу более чистое решение, чем необходимость вручную удалять атрибут [Required]
из всех моих вычисляемых столбцов каждый раз, когда я воссоздаю свою модель сущности. Могу ли я объявить столбец по-другому в SQL, например?