2012-03-27 1 views
0

я получаю следующее сообщение об ошибке:Ошибка на Entity Framework .Add(), который не делает никакого смысла

InnerException: {"Cannot insert the value NULL into column 'UserId', table 'database.dbo.bp_UserDetails'; column does not allow nulls. INSERT fails. The statement has been terminated."}

Проблема заключается в том, что 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

Набор DatabaseGeneratedOption к None для ключевого свойства в модели:

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

Если вы не сделаете этого EF по умолчанию предполагается, что UserId генерируется в базе данных в виде столбца идентификации и никогда не посылает значение для сервера.

+0

А ... да, это тот же ключ, что и основной стол. Я попробую. –