Asp.net mvc EF-SaveChanges()保存2条记录
我在Azure中托管了一个ASP.NET Web应用程序。有趣的是,有时应用程序会在数据库中创建两条记录 有人能确认我是否在做下面的傻事吗? 存储库代码段: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)
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,这正是我要去的地方。我如何执行检查以确定重复提交?在这里搜索-你会发现像和这样的问题-以及更多的问题