如何在代码中首先使用SQL的计算列

时间:2017-01-02 09:29:04

标签: c# sql-server entity-framework

我使用EF-Code First,这是我的数据注释模型:

public int Count { get; set; }
public int Fee { get; set; }

[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public int? Total { get; set; }

我在SQL Server中有一个函数:

ALTER FUNCTION dbo.Function4
(
    @Count INT, @Fee INT
)
RETURNS Int
AS
   BEGIN
     DECLARE @Result INT
     SET @Result = @Count * @Fee
     RETURN 
     @Result
END

在Total&#39的计算列规范中,我写了这个公式:

([dbo].[Function4]([Count],[Fee]))

这很好用。但我的问题是:每当我更改模型时,数据库都会重新创建,因为我已经使用了DropCreateDatabaseIfModelChanges。我可以删除[DatabaseGenerated(DatabaseGeneratedOption.Computed)]并根据代码进行计算,但我想知道代码中的[DatabaseGenerated(DatabaseGeneratedOption.Computed)]用法是什么?

2 个答案:

答案 0 :(得分:0)

的用法
 [DatabaseGenerated(DatabaseGeneratedOption.Computed)] 

表示数据库在插入或更新行时生成值。

See here

答案 1 :(得分:0)

DatabaseGeneratedOption.Computed-表示属性具有存在于数据库中的相应字段,但该值应从数据库中检索,而不是从C#中传递