1

我正在使用实体框架数据库第一种方法

我有一个表,在 ID(int,身份增量)上具有复合主键,HashKey(二进制)基于使用 sql hashbytes 的多个列自动生成。

以下是 EF 列映射

ID storeGeneratedPattern="Identity" 和 hashkey(binary) storeGeneratedPattern="Computed"。

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

“不支持修改主键列的属性‘StoreGeneratedPattern’设置为‘计算’的表。改用‘身份’模式。键列:‘HashKey’。表”

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

我看过下面的链接。但我不确定解决方案。

在 SaveChanges() 之后未更新 StoreGeneratedPattern 设置为 Identity 的属性

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

4

1 回答 1

0

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

您可以将身份保留为 PK 并仍然创建包含列(id、散列)的聚集索引。

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

于 2016-10-13T21:05:25.207 回答