我正在使用EF CodeFirst执行我的第一步,特别是使用dataAnnotations。 现在我正在尽力理解“DatabaseGenerated”属性。 到目前为止我所知道的:
所以 - 我可以想象当使用“Id”选项时会发生什么,我不知道使用“Computed”选项会发生什么。我认为这应该告诉db计算字段值。
例如:字段“ sum ”=字段“价格”+字段“ shipping ”。
但是我怎么能用那种方式呢?我环顾四周,没有找到任何例子。你能帮我吗?
答案 0 :(得分:0)
您不能使用EF告诉数据库如何计算列 - 您只能告诉EF该列是数据库生成的,因此应该从数据库中检索它以供您在代码中使用。
要控制数据库计算列的方式,您必须在EF之外或数据库初始化逻辑中手动指示它。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
context.Database.ExecuteSqlCommand("RAW SQL HERE");
}
您的SQL(MS T-SQL)可能如下所示(more here):
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,这里有一些关于Computed Colums的信息: http://msdn.microsoft.com/en-us/library/ms191250(v=sql.105).aspx