Есть ли способ предотвратить вставку EF в вычисляемый SQL Server столбец? - PullRequest
2 голосов
/ 04 марта 2020

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

Ответы [ 3 ]

3 голосов
/ 04 марта 2020

Вы можете использовать атрибут DatabaseGenerated :

using System.ComponentModel.DataAnnotations.Schema;
....

[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public int ComputedColumn { get; set; }
1 голос
/ 04 марта 2020

DatabaseGeneratedOption.Identity

Указывает, что значение свойства будет сгенерировано базой данных в операторе INSERT. Это свойство Identity не может быть обновлено.

[DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
public int Id { get; set; } 

DatabaseGeneratedOption.Compute Указывает, что значение свойства будет создаваться базовой базой данных при вставке, а затем при каждом последующем обновлении. Полезно для LastAccessTime и тому подобных вещей

0 голосов
/ 04 марта 2020

Если вы используете свободный API в OnModelCreating, тогда вы можете использовать

entity.Property(e => e.ComputedColumn)
      .ValueGeneratedOnAddOrUpdate();

. Также есть ValueGeneratedOnAdd и ValueGeneratedOnUpdate, если значение вычисляется только при вставке или обновлении соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...