2017-04-07 254 views
0

我試圖用LINQ在我的數據庫中插入一個對象。我的主鍵是自動增量。我是否需要在代碼中增加id或Entity Framework可以做到這一點?實體框架LINQ插入

我有我的DbContext:

TravelAgencyEntities db = new TravelAgencyEntities(); 

我試圖插入用戶對象:

User newUser = new User(); 
     newUser.FirstName = firstName.Text.ToString(); 
     newUser.LastName = lastName.Text.ToString(); 
     newUser.Email = email.Text.ToString(); 
     newUser.Password = password.Text.ToString(); 

     db.Users.Add(newUser); 
     db.SaveChanges(); 

它返回一個例外:

{"An error occurred while updating the entries. See the inner exception for details."} 

我認爲這是錯誤因爲我沒有在我的對象中設置id,但它應該是自動增量。有誰知道這個問題?

內ERROR:

Cannot insert explicit value for identity column in table 'User' when IDENTITY_INSERT is set to OFF 
+1

內部例外說什麼? – juharr

+1

那麼...... InnerException是什麼? –

+0

+ \t \t InnerException \t {「當IDENTITY_INSERT設置爲OFF時,無法在表'User'中插入標識列的顯式值。」} \t System.Exception {System.Data.SqlClient.SqlException} – user6824563

回答

1

如果您第一次使用的代碼,可能已經設置按照的DbContext OnModelCreating代碼。

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    base.OnModelCreating(modelBuilder); 

    modelBuilder.Entity<User>() 
     .Property(a => a.Id) 
     .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None); 
} 

或者設置屬性類似以下

public class User 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public int Id { get; set; } 

    ..... 
} 

必須更改無以身份。標識選項是密鑰的默認選項。