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