【问题标题】:Trying to Query a SQL Server from ASP.net MVC 4 using C#尝试使用 C# 从 ASP.net MVC 4 查询 SQL Server
【发布时间】:2014-05-13 19:49:45
【问题描述】:

我正在尝试使用查询来查找数据库 FPTContributorUsers 中名为 ContributorUser 的表中的最后一个 ID(条目),然后添加一个新条目,从而为其分配下一个可用 ID。

下面的代码允许我将数据添加到数据库中的表中,但是当我运行它时,ID(表的新条目)显示为 0 而不是 4。因为我的表中目前有三个条目

[HttpPost]
public ActionResult AddContributor(ContributorUsers AddCont)
{
  if (AddCont.UserID == null)
  {
    throw new HttpException(404, "Please enter a valid RacfId");
  }
  else
  {
    FPTContributorUsers NewUser = new FPTContributorUsers();
    NewUser.UserID = AddCont.UserID;
    NewUser.ID = AddCont.ID;
    db.ContributorUsers.Add(NewUser);
    db.SaveChanges();
    return RedirectToAction("index");
  }
}  

【问题讨论】:

  • 什么是db?如何连接到数据库?
  • sorry db 是我连接到数据库的实体容器实例,因此是有问题的表
  • 我看不出您在此代码中从何处获得下一个 ID 值,或者为什么您认为 NewUser.ID 与 AddCont.ID 中已有的不同。正如下面所建议的,在该字段上使用自动增量,然后简单地不指定 ID 是更典型的 (IMO)。
  • 抱歉,在这种情况下您将如何实现自动增量?抱歉,我是新手

标签: c# asp.net-mvc asp.net-mvc-4


【解决方案1】:

您是否考虑过仅将其设为主键并使其自动递增,这样您就无需自己确定它是什么?根据我的经验,这通常是处理实际 ID 的最佳方式。

要在 SQL Server 中执行此操作,请遵循 these 步骤

要在 MySQL 中执行此操作,请遵循 these 步骤

请注意,如果您这样做,您将需要更新您的 EF 模型。

如果您无法编辑数据库,另一种方法是对将返回最高 ID 值的列使用 MAX(),然后只需向其中添加一个,无需更新 EF 模型。

【讨论】:

  • 您能告诉我如何将其设为主键吗?然后自动递增?抱歉,我是新手。
  • 我已经编辑了我的答案,为您提供一些关于在哪里可以找到您需要的信息的指示。
  • 谢谢。知道如何在视觉工作室的控制器中实现这一点。只是因为我的工作任务要求我避免编程sql server
  • 你是什么意思避免编程 SQL 服务器?你的意思是你不能访问它并且可以将 SQL 命令传递给服务器,或者你不能编辑数据库的模式?无论哪种方式,这种更改都需要在数据库级别进行更改。
  • 谢谢本。我已经能够通过使用contributorusers.max(i => i.BPid)+1 来解决它
【解决方案2】:

尝试删除“NewUser.ID = AddCont.ID”行并等待获取 NewUser.ID 直到“db.SaveChanges()”之后

else
  {
    FPTContributorUsers NewUser = new FPTContributorUsers();
    NewUser.UserID = AddCont.UserID;
    db.ContributorUsers.Add(NewUser);
    db.SaveChanges();
    return RedirectToAction("index");
  }

如果 NewUser.ID 属性是数据库中的标识字段,则在 SaveChanges() 事务提交期间创建记录之前,它不会被填充。

【讨论】:

    【解决方案3】:

    在调用 NewUser.ID 之前,在 SaveChanges() 之后尝试 Reload() 数据库上下文,以便上下文是最新的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-25
      • 2011-04-29
      • 1970-01-01
      • 2018-05-29
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 2014-10-10
      相关资源
      最近更新 更多