簡體   English   中英

實體框架 6 不保存更改

[英]Entity Framework 6 not saving changes

我有一個 MVC5 Web 應用程序,它使用 SQL Server 2008 作為后端數據庫以及 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();

根據評論, 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();
}

否則更改將在事務塊的末尾被丟棄。

您能否稍微更改一下代碼並嘗試以下操作:而不是使用 db.Advance_Bookings.Add(ab) 您可以使用以下操作:

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

另外,據我所知,這個問題只有在 DbContext 斷開連接時才會發生(因為它沒有給出任何錯誤)。 您可以嘗試將代碼包裝在 using 塊中

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM