如何在ASP.NET MVC中获取数据库条目?

时间:2016-07-27 22:41:26

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

我正在尝试在ASP.NET MVC中执行一个项目。这是我的数据库结构。

Database Structure

这是我的控制器类中的一个动作。

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()

这样的东西

3 个答案:

答案 0 :(得分:0)

Identity(1,1)表示自动递增,从1开始,递增1。 根据您的需要(第一个用户从0开始,在UserId上将其更改为Identity(0,1)。

答案 1 :(得分:0)

Identity(1,1)表示您的列设置为自动递增,从1开始,每行递增1。如果将其添加到模型中并不重要,这是SQL的行为,在每次插入时它将获得最大UserID,将其递增1并插入记录。

但是,在你的评论中,你再次询问如何获得最大的UserID,所以你可以试试这个:

var Id = db.Users.Max(x => x.UserId);
var newId = Id + 1;

答案 2 :(得分:0)

使用linq并添加用户时,新创建的id绑定到用户模型。

只要您还有主键自动增量

你也永远不会有一个0的返回id,它将从1开始

所以你可以去

db.Users.Add(user);
var newUserID = user.userid;

return newUserID;

或添加记录时,您应该将用户模型传递回viewModel并将其传递回视图,以便用户可以看到他们刚输入的信息。