1

我不断收到此错误:

无法将值 NULL 插入到列“Id”、表“database.dbo.Employees”中;列不允许空值。INSERT 失败。\r\n语句已终止。

但是该对象的此属性设置为Guid.NewGuid()

我使用实体框架 4.1 和 .net 框架 4.0。

该列是主键,不为空。我没有使用 Code First 方法。

编辑:如果我手动编辑文件 edmx.Run Custom 工具似乎不会更新文件。

4

2 回答 2

3

如果您使用 Fluent API 或数据注释在模型中将关键属性标记为自动生成的身份,则可能会发生这种情况......

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

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

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

于 2012-10-27T12:27:02.047 回答
0

导致错误的问题是运行自定义工具没有完全更新实体。来自 SQL 的插入有效,因此我尝试从 Slauma 建议的更改和实体的其他更改中恢复。

于 2012-10-27T14:24:46.103 回答