3

我刚刚开始使用 EF CodeFirst,尤其是使用 dataAnnotations。现在我正在尽我所能理解“DatabaseGenerated”属性。到目前为止我所知道的:

  • 使用此属性为我提供了三个选项来处理属性值的创建:Computed、Id 和 None。
  • 使用此属性意味着该属性不能手动更新 - 它由数据库完成

所以 - 我可以想象使用“Id”选项时会发生什么,我不知道使用“Computed”选项时会发生什么。我认为这应该告诉数据库计算字段值。

例如:字段“ sum ”=字段“价格”+字段“运费”。

但是我怎么能以这种方式使用它呢?我环顾四周,没有找到任何例子。请你帮助我好吗?

4

1 回答 1

0

您不能使用 EF 告诉数据库如何计算列 - 您只能告诉 EF 该列是数据库生成的,因此应该从数据库中检索它以供您在代码中使用。

要控制数据库如何计算列,您必须在 EF 之外或在数据库初始化逻辑中手动指示它。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    context.Database.ExecuteSqlCommand("RAW SQL HERE");
}

您的 SQL (MS T-SQL) 可能看起来像这样(更多在这里):

CREATE TABLE t2 (a int, b int, c int, x float, 
   y AS CASE x 
         WHEN 0 THEN a 
         WHEN 1 THEN b 
         ELSE c 
      END)

对于 SQL,这里有一些关于计算列的信息:http: //msdn.microsoft.com/en-us/library/ms191250 (v=sql.105).aspx

也供参考:http: //msdn.microsoft.com/en-us/library/gg193958.aspx

于 2012-09-12T13:24:44.413 回答