Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试使用C从ASP.net MVC 4查询SQL Server#_C#_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# 尝试使用C从ASP.net MVC 4查询SQL Server#

C# 尝试使用C从ASP.net MVC 4查询SQL Server#,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我试图使用查询在数据库FPTContributorUsers中查找表中名为ContributorUser的最后一个ID(条目),然后添加一个新条目,从而为其分配下一个可用ID 下面的代码允许我将数据添加到数据库中的表中,但是当我运行它时,ID(表的新条目)显示为0而不是4。因为我的表中目前有三个条目 [HttpPost] public ActionResult AddContributor(ContributorUsers AddCont) { if (AddCont.UserID == n

我试图使用查询在数据库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");
  }
}  

你有没有想过把它作为主键,让它自动递增,这样你就不需要自己决定它是什么了?根据我的经验,这通常是处理实际ID的最佳方式

要在SQL Server中执行此操作,请执行以下步骤

要在MySQL中执行此操作,请执行以下步骤

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

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

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


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

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

什么是
DB
?如何连接到数据库?抱歉,db是连接到数据库的实体容器的实例,因此是有问题的表。我看不出在此代码中下一个ID值是从何处获得的,或者为什么您会认为NewUser.ID不是AddCont.ID中已有的内容。正如下面所建议的,在该字段上使用自动递增,然后简单地不指定ID更为典型(IMO)。对不起,在这种情况下,您将如何实现自动递增?对不起,我是新手,你能告诉我怎么把它作为主键吗?然后自动递增?很抱歉,我是新手。我编辑了我的答案,为您提供了一些在哪里可以找到所需信息的提示。谢谢。你知道我如何在visual Studio的控制器中实现这一点吗。仅仅因为我的工作任务要求我避免编程sql server,你说的避免编程sql server是什么意思?您的意思是说您不能访问它,可以向服务器传递SQL命令,还是不能编辑数据库的模式?无论如何,这种更改都需要在数据库级别进行更改。谢谢ben。我已经能够通过使用contributorusers.max(I=>I.BPid)+1解决这个问题
else
  {
    FPTContributorUsers NewUser = new FPTContributorUsers();
    NewUser.UserID = AddCont.UserID;
    db.ContributorUsers.Add(NewUser);
    db.SaveChanges();
    return RedirectToAction("index");
  }