我有一个应用程序在几乎所有表中使用GUID作为主键,我已经读过使用GUID作为主键时存在性能问题.老实说,我没有看到任何问题,但我即将开始一个新的应用程序,我仍然想使用GUID作为主键,但我想使用复合主键(GUID和可能是另一个字段) .)
我正在使用GUID,因为当您拥有不同的环境(如"生产","测试"和"开发"数据库)以及数据库之间的迁移数据时,它们很好并且易于管理.
我将使用Entity Framework 4.3,我想在将其插入数据库之前在应用程序代码中分配Guid.(即我不想让SQL生成Guid).
创建基于GUID的主键的最佳做法是什么,以避免与此方法相关的假设性能命中?
sql-server database-design entity-framework guid primary-key
我想阻止用户在.NET MVC中多次提交表单.我已经尝试了几种使用Javascript的方法,但很难在所有浏览器中使用它.那么,如何在我的控制器中防止这种情况呢?在某种程度上可以检测到多个提交?
我有一个购买页面,我不希望用户能够刷新页面,并在他们到达"订购完成"页面后重新提交表单,因为它会自动通过数据库值在我们的系统中设置它们并向他们的卡收费通过paypal(只希望这些发生在一起)...我看到一些网站上写着"不要点击刷新,否则你会被收取两次费用!" 但是让它开放的可能性是非常蹩脚的,只允许一次提交或阻止它们刷新等的好方法是什么?
PS:我看到了一些类似的问题:PHP:当按下Back时停止表单被意外重新处理,如何停止重新提交表单后退和刷新按钮?但是没有找到令人满意的答案......如果有一个机制,ASP.NET MVC的具体答案也是理想的.
编辑:一旦他们点击提交它给我的控制器,然后控制器做了一些魔术,然后返回一个带有订单完成消息的视图,但是如果我点击我的浏览器上的刷新它会完成'你想要重新发送这个表单吗? " 那很不好...
我有一个ASP.NET MVC 3应用程序,它有一个名为的post post Create:
[HttpPost]
public virtual ActionResult Create(Issues issues)
{
if (ModelState.IsValid)
{
context.Issues.Add(issues);
context.SaveChanges();
return RedirectToAction("Index");
}
return View(issues);
}
Run Code Online (Sandbox Code Playgroud)
如果我错误地双击提交按钮,它将创建2x问题.有没有办法防止这种情况,没有使用javascript和禁用按钮,我认为使用a的全部用途RedirectToAction是通过使用Post/Redirect/Get设计模式来防止这种情况?
如果用户不断点击提交按钮,如何防止用户多次向操作发布相同的数据?
我知道在php中,有一种方法可以防止这种多次提交,但我没有看到任何asp.net mvc.有没有?