MVC 5 Добавление записи в БД - лучший способ вызвать ее несколько раз и проверить, если она доступна - PullRequest
0 голосов
/ 14 июня 2019

У меня есть вопрос, первая часть этого довольно проста, затем в следующей части у меня есть идея, как это сделать, и в третьей части у меня тоже есть идея. Итак, у меня есть ViewModel, которая имеет те же свойства, что и таблица базы данных.

Я использую Entity Framework, чтобы я мог вызвать свой контекст и сделать context.add (entity), чтобы создать запись моей модели представления в базе данных. У меня есть текстовое поле в моем представлении, поэтому мне нужно будет добавить модель "х" раз. Текстовое поле, где я получу «х», сколько. Одно условие, которое будет происходить, состоит в том, что в моей модели и базе данных у меня есть 2 столбца, один - это partgroup, а другой - last4numbers.

Last4numbers увеличивается от 0 до 9999, а partgroup - это число. Для каждой категории. На 9999 категория группы заполнена. Каковы некоторые рекомендуемые способы добавления новой записи в базу данных, для которой столбец last4numbers находится всего в +1 от последней добавленной записи.

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

//Actual model
 public int ID { get; set; }
 [Required]
        [Display(Name = "Part Book / Category")]
        public string PartBook { get; set; }
        public string PartGroup { get; set; }
        public string Last4Number { get; set; }        
        public string PartNextNumber { get; set; }
        [Display(Name = "Today's Date")]
        public DateTime DateEntered { get; set; }       
 public string Manufacturer { get; set; }
        [Display(Name = "Manufacturer Part Number")]
        public string ManufacturerPartNumber { get; set; }
        [Required]
        [CheckDropDown]
        public string Usage { get; set; }
        [Display(Name = "Required Project(s)")]
        public string RequiredProject { get; set; }
        [Range(0, Int32.MaxValue)]
        //[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:#}")]
        public int Quantity { get; set; }
        public string Units { get; set; }
//view  
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.DropDownListFor(x => x.PartBook,
(IEnumerable<SelectListItem>) ViewBag.PartBookDDL, "", new { @class = "form-control" })
<div class="col-md-3 col-lg-3">
@Html.TextBox("txtNumberNeeded", null, new { @class = "form-control", @type = "number" })
</div>  ….  
<input type="submit"
// Here is code in which I was going to base what I’m doing off of.
public class TimeSheetMaster
    {
        [Key]
        public int TimeSheetMasterId { get; set; }
        public DateTime? FromDate { get; set; }
        public DateTime? ToDate { get; set; }
        public int? TotalHours { get; set; }
        public string UserId { get; set; }
        public DateTime? DateCreated { get; set; }
        public int TimeSheetStatus { get; set; }
        public string Comment { get; set; }
    } 
public class TimeSheetDetails
    {
        [Key]
        public int TimeSheetId { get; set; }
        public string DaysOfWeek { get; set; }
        public int? Hours { get; set; }
        public DateTime? Period { get; set; }
        public int? ProjectId { get; set; }
        public string UserId { get; set; }
        public DateTime? DateCreated { get; set; }
        public int TimeSheetMasterId { get; set; }        
    }   //View Add has properties for models
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AddTimeSheet(TimeSheetProjectsModel timeSheetModel)
{   if (ModelState.IsValid)
{   ………. . .
context.TimeSheetMaster.Add(masterModel);
context.SaveChanges();
CreateTimeSheetDetails(masterModel, timeSheetModel);
} 

Тогда я создаю детали расписания. И у меня есть строки для каждого расписания, чтобы добавить. В этом проекте немного другое, у меня будет текстовое поле, чтобы увидеть, сколько добавить, и мне придется зацикливаться и проверять, доступно ли оно или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...