属性'StoreGeneratedPattern'设置为'已计算'不受支持。使用“身份”模式

时间:2016-08-09 10:47:15

标签: c# .net entity-framework composite-primary-key hashbytes

我正在使用Entity Framework数据库第一种方法

我有一张包含复合主键的表 ID(int,identity increment), HashKey(二进制)自动使用sql hashbytes基于多列生成。

以下是EF列映射

ID storeGeneratedPattern =“Identity”和 hashkey(binary)storeGeneratedPattern =“Computed”。

当我尝试使用EF保存更改方法保存时,它会抛出异常。

“不支持将主键列的属性'StoreGeneratedPattern'设置为'Computed'的表的修改。请改用'Identity'模式。键列:'HashKey'。表”

我在这些列(Id,Hashkey)上应用了复合主键,以便在包含群集索引时更快地进行搜索。但不确定EF是否支持这一点。

我见过以下链接。但我不确定解决方案。

Property with StoreGeneratedPattern set to Identity is not updted after SaveChanges()

任何人都可以帮忙解决这个问题。

1 个答案:

答案 0 :(得分:0)

'已计算'意味着EF希望SQL在每次插入/更新后生成值。因此,将它作为PK的一部分是没有意义的。

您可以将标识保留为PK,并仍然使用列(id,hash)创建聚簇索引。

话虽如此,在聚簇索引中包含计算列也没有意义。每次更改计算列时,都需要将整行移动到新位置。