将值插入非标识键字段: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])
);

如有任何帮助,我们将不胜感激。

  1. 问题是您正在尝试将 NULL 值插入主键 列即 emp_main_id。
  2. 主键不允许插入 NULL 值或重复值。
  3. 如果要插入 NULL 值,请移除主键约束。

决定自己写答案。

问题是,由于我之前将该字段设置为标识,因此该字段的值是自动生成的。即使在从数据库中删除身份并更新模型后,也没有重置。

所以我要做的是,

  1. Go to the .edmx file.
  2. Right click on the property "emp_main_id"
  3. Click on Properties
  4. Set StoreGeneratedPatter to None
  5. Save the model and rebuild the solution

就是这样。它给了我一个非身份键,所有其他约束以及显式输入字段值的选项。和平:)