代码之家  ›  专栏  ›  技术社区  ›  Ali Eshghi

MVC中如何自动递增ID

  •  1
  • Ali Eshghi  · 技术社区  · 6 年前

    最近我在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 回复  |  直到 6 年前
        1
  •  1
  •   TanvirArjel    6 年前

    写你的 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转到数据库,打开 客户 表。右击 CustomerCode 列,然后选择属性。现在设置 单位增量 值(默认值为1)为所需值。

        2
  •  0
  •   Karthik Elumalai    6 年前

    你可以借助 数据库生成选项.标识 up()中的sql()方法 .

    如果你对以上两个概念都不熟悉,这里是有明确说明的链接

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

    Addtional: How to set initial value for auto incremented property (DatabaseGeneratedOption.Identity)

    希望能帮你解决这个问题,让我知道你的情况。

    谢谢

    推荐文章