Entity Framework 时间戳生成数据库问题

9

我在使用EF 4.0时遇到了问题。

我创建了一个带有"timestamp"列的实体。之后,我尝试生成数据库。

在SQL脚本中,该列看起来像是'binary(8)'而不是时间戳。

如何解决这个问题?

1个回答

12
解决问题:EF 4无法从edmx设计器生成时间戳列。 解决方案很简单:
  1. 将类型设置为二进制。
  2. 将可空性设置为false。
  3. 将StoreGeneratedPattern设置为计算的。
  4. 将ConcurrencyMode设置为Fixed。
  5. 创建SSDLToSQL10.tt的副本(通常在C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\DBGen中找到)。我们称之为MySSDLToSQL10.tt。
  6. 编辑当前位于第151行的内容:

[<#=Id(prop.Name)#>] <#=prop.ToStoreType()#> <#=WriteIdentity(prop, targetVersion)#> <#=WriteNullable(prop.Nullable)#><#=(p < entitySet.ElementType.Properties.Count - 1) ? "," : ""#>

  1. 更改为:

[<#=Id(prop.Name)#>] <#if (string.Compare(prop.Name,"TimeStamp",true) == 0) { #>timestamp<# } else { #><#=prop.ToStoreType()#><# } #> <#=WriteIdentity(prop, targetVersion)#> <#=WriteNullable(prop.Nullable)#><#=(p < entitySet.ElementType.Properties.Count - 1) ? "," : ""#>


@kayluhb 在 EF 5 中,这个问题并没有完全解决,但变得更加容易了。只需将属性的并发模式更改为 Fixed 即可。 - Alireza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接