【问题标题】:EF - SaveChanges() saves 2 recordsEF - SaveChanges() 保存 2 条记录
【发布时间】:2011-05-16 03:44:20
【问题描述】:

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

任何人都可以确认我是否在下面做任何愚蠢的事情吗? 存储库 sn-ps:

private SomeEntity entities = new SomeEntity ();

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

 public void Save()
        {
                    entities.SaveChanges();
        }

创建sn-ps:

repo.Add(someObject);
repo.Save();

注意:我正在使用 SQL Azure 进行持久存储。

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

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

【问题讨论】:

  • 看起来不错。有时是什么意思?
  • 从'empTimeClock'进来?
  • 谢谢@Pert,我已经更新了问题。应该是_someObject。
  • 看起来这会导致问题? $('#ClockInOutBtn').click(function () { jQuery('#Loading').showLoading( { 'afterShow': function () { setTimeout("$('form').submit();", 2000 ) } } ); });
  • @jfar,它似乎在调试模式下发生。

标签: asp.net-mvc azure


【解决方案1】:

服务器端代码看起来不错。

我认为这个问题很可能是在 javascript/客户端层引起的 - 我猜想你会以某种方式收到两个表单提交。

要调试它,请尝试:

  • 使用 Firebug(或 IE 或 Chrome 的调试器)来检测问题。
  • 使用 fiddler 检查通过网络从客户端发送到服务器的内容。
  • 在 ASP.Net MVC 中使用 Trace 来检测您的控制器被调用了多少次。

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-28
  • 2015-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
相关资源
最近更新 更多