将值插入非标识键字段:DB First
Insert value into non-identity key field : DB First
运行 在处理 EF 6 数据库优先方法 时遇到了一个小问题。
当我尝试将值插入未设置为身份的 table 的键字段时,我收到以下异常:
Cannot insert the value NULL into column 'emp_main_id',column does not allow nulls. INSERT fails.
The statement has been terminated.
我在实体中添加了以下代码class以避免错误
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int emp_main_id { get; set; }
但仍然无法正常工作。
下面是创建数据库的脚本table
CREATE TABLE [dbo].[EmployeesMain] (
[emp_main_id] INT NOT NULL,
[emp_main_first] NVARCHAR (40) NOT NULL,
[emp_main_middle] NVARCHAR (40) NULL,
[emp_main_last] NVARCHAR (40) NOT NULL,
[emp_main_dob] DATE NOT NULL,
[emp_main_gender] INT DEFAULT ((1)) NOT NULL,
[emp_main_type] INT DEFAULT ((0)) NOT NULL,
[emp_main_email] NVARCHAR (150) NOT NULL,
[emp_main_password] NVARCHAR (MAX) NOT NULL,
[emp_main_designation] NVARCHAR (150) NULL,
[emp_main_skill] NVARCHAR (MAX) NULL,
[emp_main_contract] INT DEFAULT ((0)) NOT NULL,
[emp_main_lead] NVARCHAR (81) NULL,
[emp_main_img] NVARCHAR (MAX) NULL,
[emp_main_doj] DATE DEFAULT ('01-JAN-2012') NULL,
CONSTRAINT [emp_main_primary_key] PRIMARY KEY ([emp_main_id])
);
如有任何帮助,我们将不胜感激。
- 问题是您正在尝试将 NULL 值插入主键
列即 emp_main_id。
- 主键不允许插入 NULL 值或重复值。
- 如果要插入 NULL 值,请移除主键约束。
决定自己写答案。
问题是,由于我之前将该字段设置为标识,因此该字段的值是自动生成的。即使在从数据库中删除身份并更新模型后,也没有重置。
所以我要做的是,
- Go to the .edmx file.
- Right click on the property "emp_main_id"
- Click on Properties
- Set StoreGeneratedPatter to None
- Save the model and rebuild the solution
就是这样。它给了我一个非身份键,所有其他约束以及显式输入字段值的选项。和平:)
运行 在处理 EF 6 数据库优先方法 时遇到了一个小问题。
当我尝试将值插入未设置为身份的 table 的键字段时,我收到以下异常:
Cannot insert the value NULL into column 'emp_main_id',column does not allow nulls. INSERT fails.
The statement has been terminated.
我在实体中添加了以下代码class以避免错误
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int emp_main_id { get; set; }
但仍然无法正常工作。
下面是创建数据库的脚本table
CREATE TABLE [dbo].[EmployeesMain] (
[emp_main_id] INT NOT NULL,
[emp_main_first] NVARCHAR (40) NOT NULL,
[emp_main_middle] NVARCHAR (40) NULL,
[emp_main_last] NVARCHAR (40) NOT NULL,
[emp_main_dob] DATE NOT NULL,
[emp_main_gender] INT DEFAULT ((1)) NOT NULL,
[emp_main_type] INT DEFAULT ((0)) NOT NULL,
[emp_main_email] NVARCHAR (150) NOT NULL,
[emp_main_password] NVARCHAR (MAX) NOT NULL,
[emp_main_designation] NVARCHAR (150) NULL,
[emp_main_skill] NVARCHAR (MAX) NULL,
[emp_main_contract] INT DEFAULT ((0)) NOT NULL,
[emp_main_lead] NVARCHAR (81) NULL,
[emp_main_img] NVARCHAR (MAX) NULL,
[emp_main_doj] DATE DEFAULT ('01-JAN-2012') NULL,
CONSTRAINT [emp_main_primary_key] PRIMARY KEY ([emp_main_id])
);
如有任何帮助,我们将不胜感激。
- 问题是您正在尝试将 NULL 值插入主键 列即 emp_main_id。
- 主键不允许插入 NULL 值或重复值。
- 如果要插入 NULL 值,请移除主键约束。
决定自己写答案。
问题是,由于我之前将该字段设置为标识,因此该字段的值是自动生成的。即使在从数据库中删除身份并更新模型后,也没有重置。
所以我要做的是,
- Go to the .edmx file.
- Right click on the property "emp_main_id"
- Click on Properties
- Set StoreGeneratedPatter to None
- Save the model and rebuild the solution
就是这样。它给了我一个非身份键,所有其他约束以及显式输入字段值的选项。和平:)