首页 新闻 搜索 专区 学院

EF Code First 更新数据库问题。

0
悬赏园豆:5 [已解决问题] 解决于 2015-01-09 23:23

本来我这张表是没有主键的,我现在想建立一个主键,于是我把  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' 不是约束。
未能删除约束。请参阅前面的错误信息。

KMSFan的主页 KMSFan | 初学一级 | 园豆:108
提问于:2015-01-09 22:03
< >
分享
最佳答案
0

代码中有没有进行这样的配置:

.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None)
收获园豆:5
dudu | 高人七级 |园豆:35789 | 2015-01-09 22:36

另一个实体类中有过这样的配置,不过是IDENTITY的

KMSFan | 园豆:108 (初学一级) | 2015-01-09 22:40

@KMSFan: 试试

this.HasKey(t=>t.id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
dudu | 园豆:35789 (高人七级) | 2015-01-09 22:42

@dudu: 

 

不行,点不出来

KMSFan | 园豆:108 (初学一级) | 2015-01-09 22:44

@KMSFan: 不好意思,弄错了,就是用上图中注释掉的代码,改为t.id

dudu | 园豆:35789 (高人七级) | 2015-01-09 22:48

@dudu: 改了,没用,大神请教一个问题。

ALTER TABLE [dbo].[count_voting] DROP CONSTRAINT [PK_dbo.count_voting]

为什么会执行这一句话,我这里面根本没这样的DROP语句啊。在migration文件夹里的是这样的

KMSFan | 园豆:108 (初学一级) | 2015-01-09 22:52

@KMSFan: 因为您改了主键,EF Migration时先删除以前的主键,可以将Migration关掉

dudu | 园豆:35789 (高人七级) | 2015-01-09 22:55

@dudu: 那请问一下有没有好的解决方案呢?我关掉了就无法迁移了。

KMSFan | 园豆:108 (初学一级) | 2015-01-09 22:58

@KMSFan: 或者把第11行的DropPrimaryKey代码注释掉

dudu | 园豆:35789 (高人七级) | 2015-01-09 22:59

@dudu: 不行,大神我发现了一个问题。

我在数据库里设置主键时候出的问题。

你看看有没有关系。

KMSFan | 园豆:108 (初学一级) | 2015-01-09 23:02

@KMSFan: 在数据库里设置主键的时候,id字段设置为自增了吗?

dudu | 园豆:35789 (高人七级) | 2015-01-09 23:06

@KMSFan: 另外,把第10行的AlterColumn改为AddColumn

dudu | 园豆:35789 (高人七级) | 2015-01-09 23:13

@dudu: 恩,又出现了一个问题。

不能将值 NULL 插入列 'CountVote',表 'Votedatabase.dbo.count_voting';列不允许有 Null 值。UPDATE 失败。

KMSFan | 园豆:108 (初学一级) | 2015-01-09 23:20

@dudu: 好了,算了,今天谢谢你了,大神,问题还是没能解决,辛苦了,我结贴吧。

KMSFan | 园豆:108 (初学一级) | 2015-01-09 23:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册