为什么控制器动作会击中两次?

时间:2017-04-02 08:17:11

标签: asp.net-mvc entity-framework

我有一个简单的代码,我将数据插入到State_Master表中。在模型类中,我在状态id上使用了[DatabaseGenerated(DatabaseGenerationOption.Computed)]属性来使其成为标识字段,并且与在数据库中将state_id字段设置为自动增量相同。

现在问题是我的add()当第一次运行此代码时,Action会命中两次,但如果同一页面我刷新它将只打一次。

由于此问题,它会添加具有不同ID的相同记录的重复条目。

我曾使用过实体框架。

代码:

模特课程:

public class state_model
{

   [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
   [Key]
   public int state_id { get; set;}
   public string state_name { get; set; }
}

控制器操作:

public ActionResult add()
{
    DataLayer dal = new DataLayer();
    state_model st = new state_model();
    st.state_name = "Bihar";
    dal.states.Add(st);
    dal.SaveChanges();
    return View("View");
}

数据库上下文:

public class DataLayer : DbContext
{
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
      base.OnModelCreating(modelBuilder);
      modelBuilder.Entity<state_model>().ToTable("state_master");
    }

      public DbSet<state_model> states { get; set; }

}

查看:

@{
    Layout = null;
 }

<!DOCTYPE html>

<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>View</title>
</head>
<body>
<div> 
    Data Inserted.....
</div>
</body>
</html>

数据库表快照:Duplicate Data Entries for same record.

查看快照:Duplicated records for same data.

0 个答案:

没有答案