【发布时间】:2016-12-02 03:18:25
【问题描述】:
我正在尝试在 ASP.NET MVC 中做一个项目。这是我的数据库结构。
这是我的控制器类中的一个动作。
public class UsersController : Controller
{
private myDBEntities db = new myDBEntities();
// GET: Users
public ActionResult Index()
{
return View(db.Users.ToList());
}
// GET: Users/Create
public ActionResult Create()
{
return View();
}
// POST: Users/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "UserId,Email,Password,FirstName,LastName,Gender,Birthday,AboutUser",Exclude ="UserId")] User user)
{
if (ModelState.IsValid)
{
db.Users.Find(user);
db.Users.Add(user);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(user);
}
}
这是我用来生成数据库表的数据库代码。
CREATE TABLE [dbo].[Users]
(
[UserId] INT Identity(1,1) NOT NULL PRIMARY KEY,
[Email] VARCHAR(100) NOT NULL,
[Password] VARCHAR(100) NOT NULL,
[FirstName] VARCHAR(100) NOT NULL,
[LastName] VARCHAR(100) NOT NULL,
[Gender] VARCHAR(10) NOT NULL,
[Birthday] DATETIME NOT NULL,
[AboutUser] VARCHAR(1500) NOT NULL
)
在这里,我正在尝试为用户创建一种输入有关其电子邮件、名字、姓氏等信息的方法,当他们这样做时,我希望将这些详细信息添加到数据库中,当发生这种情况时,我希望 UserId 成为生成。所以在我的控制器的创建方法中,我想要一种方法来获取前一个用户的 id。第一个登录的用户会得到一个 id = 0 ,然后我想检索这个 id 并继续增加它。那我该怎么做呢?
TLDR:我想要类似 db.tableName.getRow()
【问题讨论】:
-
您的
UserId已经是一个自动递增的字段。你没有设置它。 -
是的,我是这样设置的,但是没有人将 UserId 值添加到数据库中,对吧?从视图来看,用户只能输入除 UserId 之外的所有内容,但在我的代码中,我没有指定要输入数据库的 UserId 的值。
-
它是一个自动递增的字段 - 它是自动完成的!
-
您的 TLDR 具有误导性。我以为您因此没有数据上下文。现在我不确定你在这里问什么。
-
您是否为主键添加了 ALTER TABLE [yourTable] ADD ID INT IDENTITY(1,1) ?
标签: c# sql-server asp.net-mvc asp.net-mvc-4