Как добавить автоматически сгенерированный идентификатор из моих последних данных?

Я хочу автоматически сгенерировать идентификатор, который увеличился с моего предыдущего идентификатора. Формат идентификатора 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; }
}

Посмотреть

 <% 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>

Я хочу автоматически сгенерировать идентификатор, который увеличился с моего предыдущего идентификатора. Формат идентификатора A00001, A00002,... .. Я не знаю, как автоматически генерировать

3 ответа

Попробуй это

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

Сначала я неправильно понял ваш вопрос.

Вам нужно, чтобы тождество было строкой с первой буквой А? Вы можете просто использовать свойство identity вашей базы данных для автоматического приращения и использовать get для построения строки, если вам это нужно для визуальных целей?

Следующий код предназначен для первой миграции кода. Если вы используете метод базы данных первым, аннотации [Key] и [NotMapped] не нужны. В этом случае просто создайте свойство Id с идентичностью (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; }
}

Таким образом, вы получите надежность автоматического приращения вашей базы данных и гибкость наличия специального идентификатора, отформатированного в вашем определении класса.

Редактировать: переработал мой ответ полностью

Попробуйте это чувак,

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

Код получит последний идентификатор в базе данных, затем получит только число из строки и увеличит число на единицу. Это строка, где код получает номер из строки:

string angka = input.Substring(input.Length - Math.Min(3, input.Length));
Другие вопросы по тегам