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

C# 如何在ASP.NET MVC中获取数据库条目?,c#,sql-server,asp.net-mvc,asp.net-mvc-4,C#,Sql Server,Asp.net Mvc,Asp.net Mvc 4,我正在尝试用ASP.NETMVC做一个项目。这是我的数据库结构 这是我的控制器类中的一个动作 public class UsersController : Controller { private myDBEntities db = new myDBEntities(); // GET: Users public ActionResult Index() { return View(db.Users.ToList()); }

我正在尝试用ASP.NETMVC做一个项目。这是我的数据库结构

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

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
)
在这里,我试图创建一种方法,让用户输入有关他们的电子邮件、名字、姓氏等信息,当他们这样做时,我希望这些详细信息被添加到数据库中,当这种情况发生时,我希望生成一个用户ID。因此,在我的控制器的create方法中,我需要一种获取前一个用户id的方法。第一个登录的用户将获得一个id=0,然后我想要检索这个id并不断增加它。那我该怎么做呢

TLDR:我想要像db.tableName.getRow()这样的东西,Identity(1,1)表示从1和增量1开始自动递增。 对于您想要的(从0开始的第一个用户,将其更改为UserId上的标识(0,1)。

Identity(1,1)这意味着您的列被设置为自动递增,从1开始,每行递增1。无论您是否将其添加到模型中,这都是SQL的行为,即每次插入时,它将获得最大用户ID,递增1并插入记录

但由于在您的评论中,您再次询问如何获得最大用户ID,因此您可以尝试以下方法:

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

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

只要你有一个主键也自动递增

此外,您将永远不会返回id 0,它将以1开头

所以你可以走了

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

return newUserID;

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

您的
用户ID
已经是一个自动递增字段。您不需要设置它。是的,我这样设置,但没有人将用户ID值添加到数据库中,对吗ser只能输入除UserId之外的所有内容,但我的代码中没有指定要输入数据库的UserId的值。这是一个自动递增的字段-它是自动完成的!您的TLDR有误导性。我以为您没有数据上下文,因为它。现在我不确定您在这里问什么。是否添加了ALTER TABLE[yourTable]为主键添加ID INT-IDENTITY(1,1)?是的,我知道,但问题是我从我的操作中排除了UserId。因此没有模型绑定,这意味着我必须显式地将其添加到数据库中,我只想知道如何做。