2017-07-06 3 views
0

J'ai une application Web MVC5 qui utilise SQL Server 2008 comme base de données principale avec Entity Framework 6. Il n'y a aucune erreur dans l'ajout de code mais les données ne peuvent pas être stockées dans la base de données.Entity Framework 6 ne pas enregistrer les modifications

mes context.cs modèle ressemble

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

et ma méthode d'addition est comme ci-dessous

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

avez-vous essayé de déboguer et de voir ce qui est ajouté dans db.Advance_Bookings.Add (ab) ;? –

+0

Votre DataContext charge-t-il des entités à partir de la base de données? Votre chaîne de connexion semble suspecte, c'est le moins qu'on puisse dire. –

+0

@ RomanoZumbé Oui, il charge les entités de forme db. –

Répondre

0

Selon les commentaires, le db.SaveChanges(); a été enveloppé dans une transaction

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

et il travaillait seulement sans la transaction.

La raison est qu'une transaction doit être validée afin de conserver les modifications sauvegardées.

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

    transaction.Commit(); 
} 

Sinon, les modifications seront supprimées à la fin du bloc de transaction.

0

Pouvez-vous changer votre code un peu et essayer de suivre: plutôt à l'aide db.Advance_Bookings. Ajouter (ab) pouvez-vous utiliser suivant:

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

Aussi, autant que je comprenne Ce problème ne peut survenir que si DbContext est déconnecté (car il ne génère aucune erreur). Vous pouvez essayer d'envelopper votre code dans un bloc en utilisant

using (var ab = new DbContext()) 
{ 
//instantiate the object and saveChanges. 
}