我是ASP.Net MVC的新手。我刚刚开始学习它,所以请帮助我,因为我被困在一个地方。早期的回应将受到高度赞赏。 我正在制作一个注册页面。 使用App_data添加了一个SQL数据库.Below是表定义:
CREATE TABLE [dbo].[RegisterModel]
(
[Id] INT NOT NULL primary key ,
[UserName] VARCHAR(50) NOT NULL,
[Email] VARCHAR(50) NOT NULL,
[Password] VARCHAR(50) NOT NULL,
[ConfirmPassword ] VARCHAR(50) NOT NULL,
)
然后为其添加了ADO.Net Entity数据模型。 然后我创建了一个控制器帐户,其操作方法索引如下:
public class AccountController : Controller
{
//
// GET: /Account/
public ActionResult Index()
{
//using (dbRegisterModelEntities dc = new dbRegisterModelEntities())
//{
return View();
}
[HttpPost]
public ActionResult Index(RegisterModel user)
{
if (ModelState.IsValid)
{
using (dbRegisterModelEntities dc = new dbRegisterModelEntities())
{
dc.RegisterModels.Add(user);
dc.SaveChanges();
return RedirectToAction("Index", "Account");
}
}
return View(user);
}
创建一个用户后,现在我收到错误:
违反PRIMARY KEY约束' PK__tmp_ms_x__3214EC0778D493BE'。 无法在对象' dbo.RegisterModel'中插入重复键。该 重复键值为(0)。声明已经终止。
当我尝试添加第二个用户时,会出现此错误。
答案 0 :(得分:1)
您应该将id声明为标识或为每个用户设置不同的值
CREATE TABLE [dbo].[RegisterModel]
(
[Id] INT NOT NULL primary key IDENTITY(1,1) ,
[UserName] VARCHAR(50) NOT NULL,
[Email] VARCHAR(50) NOT NULL,
[Password] VARCHAR(50) NOT NULL,
[ConfirmPassword ] VARCHAR(50) NOT NULL,
)
答案 1 :(得分:0)
您的主键应该是一个标识列,每次递增1。
CREATE TABLE [dbo].[RegisterModel]
(
[Id] INT NOT NULL IDENTITY(1,1) ,
[UserName] VARCHAR(50) NOT NULL,
[Email] VARCHAR(50) NOT NULL,
[Password] VARCHAR(50) NOT NULL,
[ConfirmPassword ] VARCHAR(50) NOT NULL,
CONSTRAINT PK_RegisterModel PRIMARY KEY
(
Id
)
);
答案 2 :(得分:0)
只需从表格和模型中删除ID列:
CREATE TABLE [dbo].[RegisterModel]
(
[UserName] VARCHAR(50) NOT NULL PRIMARY KEY,
[Email] VARCHAR(50) NOT NULL,
[Password] VARCHAR(50) NOT NULL,
[ConfirmPassword ] VARCHAR(50) NOT NULL
);
用户名必须是唯一的,因此您已有一个关键字段。