在处理 EF 6数据库第一种方法时遇到一个小问题。
当我尝试将值插入未设置为Identity的表的键字段时,我收到以下异常:
无法将值NULL插入列'emp_main_id',列不允许空值。 INSERT失败。
声明已经终止。
我在实体类中添加了以下代码以避免错误
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int emp_main_id { get; set; }
但仍然无法正常工作。
以下是创建数据库表的脚本
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])
);
对此有任何帮助将不胜感激。
答案 0 :(得分:0)
答案 1 :(得分:0)
决定自己写答案。
问题是,由于我之前已将字段设置为标识,因此字段的值将自动生成。即使在删除标识并从数据库更新模型后,也没有重置。
所以我必须做的是,
- 转到.edmx文件。
- 右键单击属性“emp_main_id”
- 点击属性
- 将 StoreGeneratedPatter 设置为无
- 保存模型并重建解决方案
醇>
就是这样。它为我提供了一个非身份密钥,包含所有其他约束以及明确输入字段值的选项。和平:))