Что делает аннотация данных [DatabaseGenerated (DatabaseGenerationOption.Computed)]? - PullRequest
8 голосов
/ 21 февраля 2011

Я пытаюсь выяснить, что на самом деле делает

[DatabaseGenerated(DatabaseGenerationOption.Computed)]

DataAnnotation.Однако я не могу найти какую-либо информацию с помощью поисков Google или MSDN.У кого-нибудь есть идеи?

Ответы [ 2 ]

9 голосов
/ 21 февраля 2011

Вычисляемый столбец - это столбец таблицы, который не может быть обновлен, но вместо этого основан на других данных в строке.

Это понятие, подобное представлению, но более легкое,и может быть PERSISTED без необходимости создания индексированного представления.

Например, у вас может быть вычисляемый столбец для сложения двух чисел, как это (в T-SQL):

CREATE TABLE [Foo]
(
    [FooId] int NOT NULL IDENTITY,
    CONSTRAINT [Foo_PK] PRIMARY KEY ([FooId]),

    [ItemA] int,
    [ItemB] int,
    [Sum] AS ([ItemA] + [ItemB])
)

Entity Framework необходимо знать об этих столбцах, чтобы не пытаться выполнить оператор Update, который попытался бы изменить значение этого столбца.

3 голосов
/ 21 февраля 2011

Этот атрибут используется в Entity Framework-коде, где он определяет, как генерируется значение.DatabaseGenerationOptions - это перечисление Identity, Computed, None, где Identity соответствует столбцу идентификаторов, Computed - вычисляемый столбец.

...