Asp.net mvc EF-SaveChanges()保存2条记录

Asp.net mvc EF-SaveChanges()保存2条记录,asp.net-mvc,azure,Asp.net Mvc,Azure,我在Azure中托管了一个ASP.NET Web应用程序。有趣的是,有时应用程序会在数据库中创建两条记录 有人能确认我是否在做下面的傻事吗? 存储库代码段: private SomeEntity entities = new SomeEntity (); public void Add(SomeObject _someObject) { entities.EmployeeTimeClocks.AddObject(_someObject)

我在Azure中托管了一个ASP.NET Web应用程序。有趣的是,有时应用程序会在数据库中创建两条记录

有人能确认我是否在做下面的傻事吗? 存储库代码段:

private SomeEntity entities = new SomeEntity ();

 public void Add(SomeObject _someObject)
            {
                entities.EmployeeTimeClocks.AddObject(_someObject);
            }

 public void Save()
        {
                    entities.SaveChanges();
        }
repo.Add(someObject);
repo.Save();
创建代码段:

private SomeEntity entities = new SomeEntity ();

 public void Add(SomeObject _someObject)
            {
                entities.EmployeeTimeClocks.AddObject(_someObject);
            }

 public void Save()
        {
                    entities.SaveChanges();
        }
repo.Add(someObject);
repo.Save();
注意:我正在使用SQLAzure进行持久存储

我有这个JQuery来显示加载,这可能是导致这个问题的原因吗

$('#ClockInOutBtn').click(function () {
                jQuery('#Loading').showLoading(
                        {
                            'afterShow': function () { setTimeout("$('form').submit();", 2000) }
                        }
                        );
            });

服务器端代码看起来不错

我认为这个问题最有可能是由javascript/客户端层引起的——我猜您可能会遇到两个表单提交

要对此进行调试,请尝试:

  • 使用Firebug(或IE或Chrome的调试器)检测问题
  • 使用fiddler检查通过网络从客户端发送到服务器的内容
  • 在ASP.NETMVC中使用跟踪来检测控制器被调用的次数

如果问题出现在客户端,那么您可以使用某种检查来解决此问题,以防止重复提交-根据应用程序的要求,在客户端和服务器上添加此检查可能是值得的。

看起来不错。你说有时是什么意思?有来自“empTimeClock”的消息吗?谢谢@Pert,我已经更新了这个问题。应该是_someObject.看起来这是导致问题的原因$(“#ClockInOutBtn”)。单击(函数(){jQuery(“#加载”)。显示加载({'afterShow':函数(){setTimeout($('form')。submit();”,2000)})@jfar,这似乎是在调试模式下发生的。谢谢@Stuart,这正是我要去的地方。我如何执行检查以确定重复提交?在这里搜索-你会发现像和这样的问题-以及更多的问题