我不断收到此错误:
无法将值 NULL 插入到列“Id”、表“database.dbo.Employees”中;列不允许空值。INSERT 失败。\r\n语句已终止。
但是该对象的此属性设置为Guid.NewGuid()
我使用实体框架 4.1 和 .net 框架 4.0。
该列是主键,不为空。我没有使用 Code First 方法。
编辑:如果我手动编辑文件 edmx.Run Custom 工具似乎不会更新文件。
我不断收到此错误:
无法将值 NULL 插入到列“Id”、表“database.dbo.Employees”中;列不允许空值。INSERT 失败。\r\n语句已终止。
但是该对象的此属性设置为Guid.NewGuid()
我使用实体框架 4.1 和 .net 框架 4.0。
该列是主键,不为空。我没有使用 Code First 方法。
编辑:如果我手动编辑文件 edmx.Run Custom 工具似乎不会更新文件。
如果您使用 Fluent API 或数据注释在模型中将关键属性标记为自动生成的身份,则可能会发生这种情况......
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
...(其效果是 EF 不会将Id
值发送到数据库,因为它希望在那里生成密钥)但是在您的数据库表中,您没有指定该Id
列的默认值,newid()
以便数据库不会生成新密钥。
我想Guid
手动将值从客户端发送到数据库,DatabaseGeneratedOption.Identity
从模型中删除规范。
导致错误的问题是运行自定义工具没有完全更新实体。来自 SQL 的插入有效,因此我尝试从 Slauma 建议的更改和实体的其他更改中恢复。