【问题标题】:Id is always 0 when creating a new Order创建新订单时 ID 始终为 0
【发布时间】:2021-08-21 13:45:48
【问题描述】:

我正在使用 .net Core 5 和 MVC 我正在尝试创建一个表格来填写客户信息以继续订购,一切都很好,但生成的订单 ID 始终为 0。我不知道问题出在哪里。有人可以帮我解决我遇到的问题吗?

这是我的仓库

public bool CreateOrder(Order order)
    {
        var newOrder = new Order
        {
            FirstName = order.FirstName,
            LastName = order.LastName,
            Email = order.Email,
            PhoneNumber = order.PhoneNumber,
            //more
        };
        _dbContext.Orders.Add(newOrder);
        _dbContext.SaveChanges();
        return true;
    }

这是我的 Post 方法

public IActionResult CreateOrder(Order order)
    {
        var items = _cartRepo.GetCartItem();
        if (items == null)
        {
            ModelState.AddModelError("", "Add Product First");
        }
        else
        {
            _cartRepo.CreateOrder(order);
        }
        return View();
    }

型号

 public partial class Order
{
    [Key]
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Email { get; set; }
   // More
}

【问题讨论】:

  • 您能否添加构成POST 的视图代码和呈现视图的控制器代码。请指向行生成Id等于0好吗?
  • 所以问题不在我的代码中,当我遇到一些迁移问题时它崩溃了

标签: asp.net-core repository


【解决方案1】:

也许您在表单内的createOrder 视图中遗漏了这个:-

<input hidden asp-for="Id" />

【讨论】:

  • 看起来我的迁移有问题,现在我收到以下消息:要更改列的 IDENTITY 属性,需要删除并重新创建该列。
  • stackoverflow.com/questions/53408175/… 请按照此说明操作。
  • 我正在关注它。
  • @SinLee 只需删除(删除)您的数据库和所有迁移。然后add-migration &lt;migration_name&gt; 然后update-database
  • 所以问题不在我的代码中,当我遇到一些迁移问题时它崩溃了
【解决方案2】:

您使用 SSMS 吗?如果是,请转到菜单 Tools > Options > Designers 并取消选中 Prevent Saving changes that requires re-creation.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2014-01-09
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多