C# 尝试使用C从ASP.net MVC 4查询SQL Server#
我试图使用查询在数据库FPTContributorUsers中查找表中名为ContributorUser的最后一个ID(条目),然后添加一个新条目,从而为其分配下一个可用ID 下面的代码允许我将数据添加到数据库中的表中,但是当我运行它时,ID(表的新条目)显示为0而不是4。因为我的表中目前有三个条目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
[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");
}