我发布了一个网络应用程序,它在azure上运行。我正在我的计算机(localhost)上测试的Web应用程序项目,然后在Web应用程序上。当我测试创建一个新行的数据时(例如PersonTable上的新人)它在我的localhost上工作但是当我测试发布的web应用时它会抛出这个错误:
无法将值NULL插入列' ID_ANTEC_PERS',表中 ' Telejdb.dbo.ANTECEDENTES_PERSONALES&#39 ;;列不允许空值。 INSERT失败。声明已经终止。
该列(ID_ANTEC_PERS)是该表的ID(ANTECEDENTES_PERSONALES),但是我在我的sql server DB上为此列设置了identity(1,1)属性。当我在我的计算机上工作这个项目(localhost)时,我没有遇到这个问题,我认为这是因为项目知道了自动增量属性的顺序。但现在,一旦web应用程序发布并在azure上运行,我想看到我的项目的代码但我意识到它是在.dll文件上编译的所以我无法编辑Web应用程序项目。任何帮助?指南?建议?我会很感激的。
提前致谢
答案 0 :(得分:3)
检查表格设计中的字段然后选中表格设计中的复选框,然后它允许在表格中插入空值
id应该是递增值。
你需要设置它,否则如果你有一个不可为空的列,没有默认值,如果你没有提供任何值,它就会出错。
在SQL Server Management Studio中设置自动增量:
如果您没有遇到此问题,请在本地在设计中打开你的桌子 选择您的列并转到列属性
在Indentity Specification下,设置(Is Identity)= Yes和Indentity Increment = 1
表示您必须更新
azure数据库
答案 1 :(得分:1)
最后我可以解决它,问题是我的天蓝色数据库表没有身份属性(自动增量)所以表有一个PK,但它没有自己的身份属性。
发生什么事?
当我尝试将我的本地数据库(其所有表都具有标识属性)导入到azure DB时,我没有使用未知方法(我使用SSMS的任务:任务>导出数据...)这可能导入所有表,PK约束和所有数据,但它没有导入所有标识属性。
如何解决?
我要解决的问题是再次导入我的数据库,但这次是以正确的方式:通过bacpac文件将本地数据库导入azure db(azure数据库识别这种备份文件)。
实际上,在我使用该方法导入我使用的数据库之前,我尝试通过导入bacpac文件导入我的数据库,但我不能,因为我使用了SSMS 2014并研究了另一个stackoverflow问题,我发现我可以&使用SSMS 2014制作bacpac文件(我遇到了聚集索引的问题)但是我可以用SSMS 2016来做,所以我安装了它,最后我可以创建bacpac文件然后我可以将它导入到我的天蓝色db,它有标识属性