【发布时间】:2020-02-04 10:00:18
【问题描述】:
我尝试添加新记录:
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 插入列“Id”、表“Equifax.dbo.EquifaxAnswers”;列不允许空值。插入失败。
主键定义:
public partial class EquifaxAnswers
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Id { get; set; }
为什么 EF 不添加 Id 到 INSERT 以及如何解决这个问题?
统一更新: 数据库中的表定义脚本:
CREATE TABLE [dbo].[EquifaxAnswers](
[Id] [int] NOT NULL,
[FileName] [nvarchar](300) NOT NULL,
[dtSend] [datetime] NOT NULL,
[dtDateTime] [datetime] NULL,
[RecordsAll] [int] NULL,
[RecordsCorrect] [int] NULL,
[RecordsIncorrect] [int] NULL,
[ResendedId] [int] NULL,
[dtEmailAbout] [datetime] NULL,
[StartDate] [datetime] NULL,
[EndDate] [datetime] NULL,
CONSTRAINT [PK_EquifaxAnswers] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
【问题讨论】:
标签: c# sql-server entity-framework ef-code-first code-first