如何添加自动生成的ID继续从我最后的数据



我想自动生成从我以前的ID递增的ID。ID格式为A00001, A00002,... ..我不知道如何自动生成

控制器

[HttpPost]
    public ActionResult Create(Assignment assignment)
    {
        if (ModelState.IsValid)
        {
            if (Request.Files.Count > 0)
            {
                HttpPostedFileBase assignmentFile = Request.Files[0];
                if (assignmentFile.ContentLength > 0)
                {
                    var fileName = Path.GetFileName(assignmentFile.FileName);
                    assignment.FileLocation = Path.Combine(Server.MapPath("~/Content/File"), fileName);
                    assignmentFile.SaveAs(assignment.FileLocation);
                }

            }
            db.Assignments.Add(assignment);
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(assignment);
    }

  public partial class Assignment
   {
    public Assignment()
    {
        this.CourseAvailables = new HashSet<CourseAvailable>();
    }
    public string AssignmentID { get; set; }
    public Nullable<System.DateTime> SubmissionDate { get; set; }
    public string Status { get; set; }
    public Nullable<decimal> Mark { get; set; }
    public string Comments { get; set; }
    public string FileLocation { get; set; }
    public virtual ICollection<CourseAvailable> CourseAvailables { get; set; }
}
<<h2> 视图/strong>
 <% using (Html.BeginForm("Create", "Assignment", FormMethod.Post, new { enctype = "multipart/form-data" }))
 { %>
  <%: Html.ValidationSummary(true) %>
<fieldset>
    <legend>Assignment</legend>
    <div class="editor-label">
        <%: Html.LabelFor(model => model.SubmissionDate) %>
    </div>
    <div class="editor-field">
        <%: Html.EditorFor(model => model.SubmissionDate) %>
        <%: Html.ValidationMessageFor(model => model.SubmissionDate) %>
    </div>
    <div class="editor-label">
        <%: Html.LabelFor(model => model.Status) %>
    </div>
    <div class="editor-field">
        <%: Html.EditorFor(model => model.Status) %>
        <%: Html.ValidationMessageFor(model => model.Status) %>
    </div>
    <div class="editor-label">
        <%: Html.LabelFor(model => model.Mark) %>
    </div>
    <div class="editor-field">
        <%: Html.EditorFor(model => model.Mark) %>
        <%: Html.ValidationMessageFor(model => model.Mark) %>
    </div>
    <div class="editor-label">
        <%: Html.LabelFor(model => model.Comments) %>
    </div>
    <div class="editor-field">
        <%: Html.EditorFor(model => model.Comments) %>
        <%: Html.ValidationMessageFor(model => model.Comments) %>
    </div>
    <div class="editor-label">
        <%: Html.LabelFor(model => model.FileLocation) %>
    </div>
    <div class="editor-field">
       <%: Html.TextBoxFor(model => model.FileLocation, new { type="file"})%>
    <%: Html.ValidationMessageFor(model => model.FileLocation) %>
    </div>
    <p>
        <input type="submit" value="Create" />
    </p>
</fieldset>

我想自动生成从我的前一个ID递增的ID。ID格式为A00001, A00002,... ..我不知道如何自动生成

try this

        db.Assignments.Add(assignment);
        db.SaveChanges();
        Var AssignmentID = assignment.Id;

一开始我误解了你的问题。

您需要标识是首字母a的字符串吗?你可以使用数据库的identity属性来实现自动递增然后使用get来创建字符串,如果你需要的话?

下面的代码用于代码优先迁移。如果你使用数据库优先的方法,那么不需要[Key]和[NotMapped]注释。在这种情况下,只需创建Id属性为identity(1,1)。

public partial class Assignment
{
    public Assignment()
    {
        this.CourseAvailables = new HashSet<CourseAvailable>();
    }
    [Key]
    private int _id; // Auto incremented id
    [NotMapped]
    public string AssignmentID
    {
        get
        {
            return "A" + _id.ToString("D5");
        }
    }
    public DateTime? SubmissionDate { get; set; }
    public string Status { get; set; }
    public decimal? Mark { get; set; }
    public string Comments { get; set; }
    public string FileLocation { get; set; }
    public virtual ICollection<CourseAvailable> CourseAvailables { get; set; }
}

这样,您将拥有数据库自动增量的可靠性和在类定义中格式化特殊Id的灵活性。

编辑:完全重写了我的答案

试试这个,

con.Open();
            string sqlQuery = "SELECT TOP 1 kode_user from USERADM order by kode_user desc";
            SqlCommand cmd = new SqlCommand(sqlQuery, con);
            SqlDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                string input = dr["kode_user"].ToString();
                string angka = input.Substring(input.Length - Math.Min(3, input.Length));
                int number = Convert.ToInt32(angka);
                number += 1;
                string str = number.ToString("D3");
                txtKodeUser.Text = "USR" + str;
            }
            con.Close();

代码将获取数据库中的最后一个id,然后仅从字符串中获取数字并将数字增加1。这是代码从string获取number的行:

string angka = input.Substring(input.Length - Math.Min(3, input.Length));

最新更新