Asp.net mvc 3 在EF 4.1代码优先数据库上插入失败

Asp.net mvc 3 在EF 4.1代码优先数据库上插入失败,asp.net-mvc-3,ef-code-first,entity-framework-4.1,Asp.net Mvc 3,Ef Code First,Entity Framework 4.1,我正在使用VisualStudio2010SP1和MVC3工具更新,并首先使用EF4.1代码构建应用程序的数据库 在本地和本地数据库上进行测试时,数据库CRUD操作工作正常。直到我将数据库迁移到web主机的SQL Server 2008 R2和连接字符串中托管数据库的目标,所有插入操作才会失败 每当我尝试添加新记录时,都会出现以下错误:[I]无法将值NULL插入到“Id”列、表“DB_23378_bloomlmsdata.dbo.Courses”中;列不允许空值。插入失败。本声明已终止。[/I]

我正在使用VisualStudio2010SP1和MVC3工具更新,并首先使用EF4.1代码构建应用程序的数据库

在本地和本地数据库上进行测试时,数据库CRUD操作工作正常。直到我将数据库迁移到web主机的SQL Server 2008 R2和连接字符串中托管数据库的目标,所有插入操作才会失败

每当我尝试添加新记录时,都会出现以下错误:[I]无法将值NULL插入到“Id”列、表“DB_23378_bloomlmsdata.dbo.Courses”中;列不允许空值。插入失败。本声明已终止。[/I]

我的数据模型都指定了一个主标识键,如下所示:

[Key]
public int Id {get; set;}
...
在构建的本地数据库中,我在每个表中看到一个不可为null的主标识键

我在某个地方读到实体框架,当对数据库执行插入操作时,它将首先尝试插入一个主键为null值的记录。我不知道如何克服这种行为。而且,这似乎不是一个常见的问题,人们通常只有在使用不同于身份密钥的东西时才会遇到这个问题。作为记录,在EF4.1发布之前,我对EF CodeFirst CTP5也有同样的问题


4周来我一直在解决这个问题。。我的web主机是我在应用程序和数据库中使用的最新技术。当我试图寻求帮助时,他们告诉我这是一个编码问题,但我的代码验证了。如果您有任何想法,我们将不胜感激。

请检查Id列的IsIdentity属性,它应该设置为yes。EF不会在insert上传递标识列的值,因为它应该由数据库自动生成。

是否在数据库中使用自动生成的id值(标识)?当您从SQL Server Management Studio发出insert命令时,它是否起作用?您还可以测试
DbContext.Database.ExecuteSqlCommand
来执行原始SQL插入命令,以缩小问题的范围。@Siva-我已经试过一次了,但谢谢您@Slauma-我会尽快尝试,谢谢。