0

我收到以下错误:

InnerException:{“无法将值 NULL 插入列‘UserId’,表‘database.dbo.bp_UserDetails’;列不允许空值。INSERT 失败。语句已终止。”}

问题是它UserId 值为 12。

我的表定义为

CREATE TABLE [dbo].[bp_UserDetails](
[UserId] [int] NOT NULL,
[Name] [varchar](50) NULL.
    // Other fields
CONSTRAINT [PK_bp_UserDetails] PRIMARY KEY CLUSTERED 
(
[UserId] ASC
)
WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,
       ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

我的模型:

[Table("bp_UserDetails")]
public class UserDetails
{
    [Key]
    public int UserId { get; set; }
    [DisplayName("Customer name")]
    public string Name { get; set; }
}

任何想法为什么我可能会收到此错误?

4

1 回答 1

1

设置DatabaseGeneratedOptionNone模型中的关键属性:

[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public int UserId { get; set; }

如果您不这样做,EF 假定默认情况下UserId在数据库中生成作为标识列并且从不将值发送到服务器。

于 2012-03-27T15:33:18.743 回答