2012-10-27 43 views
1

我不断收到此错误:EF 4.1空插入GUID是不是空

无法将NULL值插入列 'ID',表 'database.dbo.Employees';列不允许有空值。 INSERT 失败。\ r \ n声明已终止。

但对象具有这个属性Guid.NewGuid()

设置我使用实体框架4.1和.NET Framework 4.0。

该列是主键而非空。我没有使用Code First方法。

编辑:如果我手动编辑文件edmx,似乎运行自定义工具不会更新文件。

回答

3

如果标记的关键特性,如用流利的API或数据注解你的模型自动生成的身份会发生这种情况?

[DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
public Guid Id { get; set; } 

...(其具有的效果是EF不会将Id值发送到数据库,因为它期望在那里生成密钥),但在数据库表中,您没有指定Id列的默认值为newid(),因此数据库不会生成新密钥。

我想要将Guid值从客户端手动发送到数据库从模型中删除DatabaseGeneratedOption.Identity规范。

+0

仍然没有解决问题 –

+0

我发现问题,但你的建议答案不是问题。 –

+0

我会给你+1,因为你在EF中教给我一些新的东西。但似乎如果我手动编辑文件运行自定义工具将无法正确更新实体 –

0

导致错误的问题是运行自定义工具没有完全更新实体。从SQL插入工作,所以我试图恢复从Slauma建议的变化和实体的其他变化。