我尝试添加新记录:
entity.Id = Id;
_bdc.EquifaxAnswers.Add(entity);
_bdc.SaveChanges();
和ID准确定义为主键,并且代码中的ID具有值(表唯一)。和EF创建用于添加记录的sql代码:
INSERT [dbo].[EquifaxAnswers]([FileName], [dtSend], [dtDateTime], [RecordsAll], [RecordsCorrect],
[RecordsIncorrect], [ResendedId], [dtEmailAbout], [StartDate], [EndDate])
VALUES (@0, @1, @2, NULL, NULL, NULL, NULL, NULL, @3, @4)
而且我们可以看到那里的ID不存在,所以_bdc.SaveChanges();
create Exception:
在25毫秒内失败,并出现错误:无法将值NULL插入表'Equifax.dbo.EquifaxAnswers'的列'Id'中;列不允许为空。插入失败。
主键定义:
public partial class EquifaxAnswers
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Id { get; set; }
为什么EF不将Id
添加到INSERT以及如何解决此问题?
您已指定DatabaseGeneratedOption.None
这意味着EF不会期望数据库生成Id
字段,因此您应该自己指定Id
字段。
如果要数据库自动生成Id
字段,则将该列更改为IDENTITY
类型,并将代码更改为DatabaseGeneratedOption.Identity