本来我这张表是没有主键的,我现在想建立一个主键,于是我把 this.HasKey(t => t.selectname);这句话改为this.HasKey(t=>t.id)结果出现了如下异常。
'PK_dbo.count_voting' 不是约束。
其实'PK_dbo.count_voting' 根本就没这个约束,我只要一改动t.selectname里的东西,就会提示这个约束不存在,怎么解决这个问题啊。
错误信息:
ALTER TABLE [dbo].[count_voting] ALTER COLUMN [selectname] [nvarchar](max)
ALTER TABLE [dbo].[count_voting] ALTER COLUMN [id] [int] NOT NULL
ALTER TABLE [dbo].[count_voting] DROP CONSTRAINT [PK_dbo.count_voting]
'PK_dbo.count_voting' 不是约束。
未能删除约束。请参阅前面的错误信息。
代码中有没有进行这样的配置:
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None)
另一个实体类中有过这样的配置,不过是IDENTITY的
@KMSFan: 试试
this.HasKey(t=>t.id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
@dudu:
不行,点不出来
@KMSFan: 不好意思,弄错了,就是用上图中注释掉的代码,改为t.id
@dudu: 改了,没用,大神请教一个问题。
ALTER TABLE [dbo].[count_voting] DROP CONSTRAINT [PK_dbo.count_voting]
为什么会执行这一句话,我这里面根本没这样的DROP语句啊。在migration文件夹里的是这样的
@KMSFan: 因为您改了主键,EF Migration时先删除以前的主键,可以将Migration关掉
@dudu: 那请问一下有没有好的解决方案呢?我关掉了就无法迁移了。
@KMSFan: 或者把第11行的DropPrimaryKey代码注释掉
@dudu: 不行,大神我发现了一个问题。
我在数据库里设置主键时候出的问题。
你看看有没有关系。
@KMSFan: 在数据库里设置主键的时候,id字段设置为自增了吗?
@KMSFan: 另外,把第10行的AlterColumn改为AddColumn
@dudu: 恩,又出现了一个问题。
不能将值 NULL 插入列 'CountVote',表 'Votedatabase.dbo.count_voting';列不允许有 Null 值。UPDATE 失败。
@dudu: 好了,算了,今天谢谢你了,大神,问题还是没能解决,辛苦了,我结贴吧。