Entity Framework 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.Advance_Bookings.Add(ab) 您可以使用以下内容:
db.Entry(ab).State = EntityState.Added;
另外,据我所知,这个问题只有在 DbContext 断开连接时才会发生(因为它没有给出任何错误)。
您可以尝试将代码包装在 using 块中
using (var ab = new DbContext())
{
//instantiate the object and 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();
}
否则更改将在事务块的末尾被丢弃。
我有一个 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.Advance_Bookings.Add(ab) 您可以使用以下内容:
db.Entry(ab).State = EntityState.Added;
另外,据我所知,这个问题只有在 DbContext 断开连接时才会发生(因为它没有给出任何错误)。 您可以尝试将代码包装在 using 块中
using (var ab = new DbContext())
{
//instantiate the object and 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();
}
否则更改将在事务块的末尾被丢弃。