我正在使用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()
任何人都可以帮忙解决这个问题。
答案 0 :(得分:0)
'已计算'意味着EF希望SQL在每次插入/更新后生成值。因此,将它作为PK的一部分是没有意义的。
您可以将标识保留为PK,并仍然使用列(id,hash)创建聚簇索引。
话虽如此,在聚簇索引中包含计算列也没有意义。每次更改计算列时,都需要将整行移动到新位置。