实体框架.Add()的错误没有任何意义

时间:2012-03-27 15:23:32

标签: entity-framework-4.3

我收到以下错误:

  

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; }
}

我可能会收到此错误的任何想法?

1 个答案:

答案 0 :(得分:1)

DatabaseGeneratedOption设置为None以获取模型中的关键属性:

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

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