C# ASP.Net EF标识列问题,单个操作中存在重复条目

C# ASP.Net EF标识列问题,单个操作中存在重复条目,c#,mysql,asp.net-mvc,entity-framework,ef-code-first,C#,Mysql,Asp.net Mvc,Entity Framework,Ef Code First,在APS.NET实体框架中,我将state_id指定为一个标识列,和我在MySql表中设置的自动递增字段相同。但当我执行insert操作时,它会为具有不同id的相同数据创建一个或多个重复条目。这是我的代码 我在状态id上使用了[DatabaseGenerated(DatabaseGenerationOption.Computed)]属性使其成为标识 嘿,伙计们,我刚刚用breakpoint检查了一下,我发现了一些非常有趣的事情,当我第一次运行这个代码add()方法时,调用了两次,但当我再次刷新页

在APS.NET实体框架中,我将state_id指定为一个标识列,和我在MySql表中设置的自动递增字段相同。但当我执行insert操作时,它会为具有不同id的相同数据创建一个或多个重复条目。这是我的代码

我在状态id上使用了[DatabaseGenerated(DatabaseGenerationOption.Computed)]属性使其成为标识

嘿,伙计们,我刚刚用breakpoint检查了一下,我发现了一些非常有趣的事情,当我第一次运行这个代码add()方法时,调用了两次,但当我再次刷新页面时,它只调用了一次。请告诉我它有什么问题

型号:

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

}
公共类数据层:DbContext
{
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
基于模型创建(modelBuilder);
modelBuilder.Entity().ToTable(“state_master”);
}
公共数据库集状态{get;set;}
}
数据库快照:

查看快照:


那么这里的问题是什么?您希望state_name列只包含唯一的值吗?没有问题的是,每当我插入数据时,它都会为具有不同ID的相同数据添加两条记录@这段代码看起来不错,你确定这个方法没有被多次调用吗?一些javascript方法会运行两次吗?可能是因为重复订阅或。在
Add
方法中设置一个断点,然后查看是否两次命中。如果是,这意味着它被客户端调用了两次。