2017-07-06 16 views
0

エンティティフレームワーク6とともにSQL Server 2008をバックエンドデータベースとして使用するMVC5 Webアプリケーションがあります。コードの追加でエラーは発生しませんが、データはデータベースに格納されません。Entity Framework 6で変更が保存されない

私のモデルcontext.csは

public partial class checkin_checkoutEntities2 : DbContext 
    { 
     public checkin_checkoutEntities2() 
      : base("name=checkin_checkoutEntities2") 
     { 
     } 

     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      throw new UnintentionalCodeFirstException(); 
     } 

     public virtual DbSet<Advance_Booking> Advance_Bookings { get; set; } 
     public virtual DbSet<employee_reg> employee_reg { get; set; } 
     public virtual DbSet<Extend_Stay> Extend_Stay { get; set; } 
     public virtual DbSet<Guest_reg> Guest_reg { get; set; } 
     public virtual DbSet<RoomBooking> RoomBooking { get; set; } 
     public virtual DbSet<Rooms_ms> Rooms_ms { get; set; } 
    } 

のように見えて、私の添加方法は、あなたのコードを少し変更し、次を試すことができます

ab.Room_id = Convert.ToInt32(ab_rm_no.room_id); 
           ab.Guest_id = Convert.ToInt32(frm["guest_id"].ToString()); 
           ab.Expected_checkin = Convert.ToDateTime(frm["BookedDateFR"].ToString()); 
           ab.Expected_checkout = Convert.ToDateTime(frm["BookedDateTO"].ToString()); 
           db.Advance_Bookings.Add(ab); 
           db.SaveChanges(); 
+0

デバッグして何がdb.Advance_Bookings.Add(ab);に追加されているのかを確認しようとしましたか? –

+0

DataContextはデータベースからエンティティをロードしますか?あなたの接続文字列は、少なくとも言わないほど疑わしいと思われます。 –

+0

@RomanoZumbéはい、エンティティフォームdbをロードします。 –

答えて

0

であなたのコードをラップしようとすることができ、db.SaveChanges();は、トランザクション

using (var transaction = new System.Transactions.TransactionScope()) 
{ 
    // some changes and db.SaveChanges(); 
} 

に包まれた、それはトランザクションなしでのみ働いていました。

理由は、保存された変更を維持するためにトランザクションをコミットする必要があるからです。

using (var transaction = new System.Transactions.TransactionScope()) 
{ 
    // some changes and db.SaveChanges(); 

    transaction.Commit(); 
} 

変更しないと、トランザクションブロックの最後に変更が破棄されます。

0

以下の通りです: db.Advance_Bookingsを使用してむしろ。あなたは次を使用することができます:

db.Entry(ab).State = EntityState.Added; 

また、この問題は、DbContextが切断されている(エラーが発生していない)場合にのみ発生します。 あなたがコメントによると、使用してブロック

using (var ab = new DbContext()) 
{ 
//instantiate the object and saveChanges. 
} 
関連する問題