[DatabaseGenerated(DatabaseGenerationOption.Computed)]数据注释有什么作用?

时间:2011-02-20 21:32:55

标签: c# entity-framework entity-framework-4 code-first

我想知道

是什么
[DatabaseGenerated(DatabaseGenerationOption.Computed)]

DataAnnotation确实如此。但是,我无法通过谷歌搜索或MSDN搜索找到任何信息。有没有人有任何想法?

2 个答案:

答案 0 :(得分:9)

计算列是表中不可更新的列,而是基于行中的其他数据。

它与View类似,但更轻量级,可以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])
)

实体框架需要了解这些列,以便它不会尝试发出尝试更改该列值的Update语句。

答案 1 :(得分:3)

该属性用于代码优先的实体框架,它指定如何生成值。 DatabaseGenerationOptionsIdentityComputedNone的枚举,其中Identity映射到标识列,Computed是计算列。< / p>