Как приращение идентификатора автоматически в MVC - PullRequest
0 голосов
/ 18 сентября 2018

Недавно я столкнулся с проблемой в MVC.Моя проблема заключается в том, как увеличить значение поля, которое является уникальным, первичным и int.Например, у меня есть customerCode как int, и я хочу увеличить его значение после сохранения нового клиента.Я получаю, что mvc сначала проверяет id, и если он равен нулю, то увеличивает его до max + 1.Но проблема здесь: если я хочу увеличить его как Max + 4, как я могу справиться с этим?это мой код:

public ActionResult Save(Customers customer)
{
    if (!ModelState.IsValid)
    {
        var _Customer = new CreatnewCustomerViewModel()
        {
            Customer = customer,
            membershiptype = _context.membershiptype.ToList()
        };
        return View("CustomerForm", _Customer);
    }
    if (customer.CustomerID==0)
    {
        //int id = _context.customers.Max(m => m.CustomerID);
        //customer.CustomerID = id + 1;
        _context.customers.Add(customer);
    }
    else
    {
        var CustomerIndb = _context.customers.Single(c => c.CustomerID == customer.CustomerID);
            {
            CustomerIndb.Name = customer.Name;
            CustomerIndb.birthday = customer.birthday;
            CustomerIndb.IsSubscribedToNewsletter = customer.IsSubscribedToNewsletter;
            // CustomerIndb.MembershipType = customer.MembershipTypeID;
            CustomerIndb.MembershipTypeID = customer.MembershipTypeID;
            }



    }
    _context.SaveChanges();
    return RedirectToAction("index", "Customer");
}

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Напишите свой Customers класс модели следующим образом:

public class Customers
{
   [Key]
   [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
   public int CustomerID { get; set; }

   [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
   public int CustomerCode { get; set; }

   public string Name { get; set; }

  // Other properties

}

Теперь создайте новую миграцию и соответственно обновите базу данных!

Теперь, если вы хотите установить Identity Increment более 1 , затем перейдите в базу данных с помощью SQL Server Management Studio, откройте таблицу Customers.Щелкните правой кнопкой мыши столбец CustomerCode и выберите свойства.Теперь установите значение Identity Increment (по умолчанию 1) на желаемое значение.

0 голосов
/ 19 сентября 2018

Вы можете легко решить эту проблему с помощью DatabaseGeneratedOption.Identity и Sql () в методе Up () .

Если вы новичок в обоихИз приведенных выше понятий, Вот ссылки с четкими инструкциями

https://forums.asp.net/t/2062551.aspx?Entity+Framework+How+to+set+a+start+value+for+an+Auto+Incremented+Column+

Addtional: Как установить начальное значение для автоматически увеличенного свойства (DatabaseGeneratedOption.Identity)

Надеюсь, это поможет избавиться от проблемы, дайте мне знать ваш статус.

Спасибо

...