Entity Framework 6 ne sauvegarde pas les modifications

asp.net-mvc-5 c# entity-framework-6 savechanges

Question

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 pas d'erreur dans l'ajout de code mais les données ne peuvent pas être stockées dans la base de données.

mon modèle context.cs 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'ajout 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();

Réponse acceptée

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

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

et cela ne fonctionnait que sans transaction.

La raison en est qu’une transaction doit être validée afin de conserver les modifications enregistrées.

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

    transaction.Commit();
}

Sinon, les modifications seraient ignorées à la fin du bloc de transaction.


Réponse populaire

Pouvez-vous changer un peu votre code et essayer de suivre: Utilisez plutôt db.Advance_Bookings.Add (ab) pouvez-vous utiliser ce qui suit:

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

Aussi, autant que je sache, ce problème ne peut se produire que si le DbContext est déconnecté (car il ne génère aucune erreur). Vous pouvez essayer d’envelopper votre code dans un bloc using

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


Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow