2017-04-07 48 views
0

LINQを使用してデータベースにオブジェクトを挿入しようとしています。私の主キーは自動インクリメントです。私のコードでIDをインクリメントする必要がありますか?それともEntity Frameworkができますか?Entity Framework LINQ Insert

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

私はそのエラーがあると思う:

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(); 

それは例外を返します:私は、ユーザーオブジェクトを挿入しようとしている

TravelAgencyEntities db = new TravelAgencyEntities(); 

私は私のdbContextを持っていますオブジェクトにIDを設定しないためですが、自動インクリメントにする必要があります。誰もが問題を知っていますか?

INNER 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'のID列に明示的な値を挿入できません。} \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); 
} 

それとも、アイデンティティにNoneを変更する必要がありません

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

    ..... 
} 

を次のように属性として設定。 IDオプションは、キーのデフォルトです。

関連する問題