主键在 C# 中不自动递增 Entity Framework

Primary Key Does not autoincrement Entity Framework in C#

我有三个小模型 classes,虽然其中两个确实有效,但一个无效,我不明白为什么。我找到了几种解决方案,但它们都没有帮助我。首先,项目中使用了code first的方法。

所以,主要问题是Coupon class中的PK没有设置为自增值。我参考了服务器资源管理器中的表格并查看了 PK 的属性。意识到其他两个 classes PK 的属性设置为 Is IdentityTrueIdentity Increment = 1 而在 Coupon 的 PK 中 属性 它们是设置为 Is IdentityFalseIdentity Increment 到 0.

我认为问题出在某处,您可以在下面找到我遇到问题的小模型。

public class Coupon
{
    public Coupon()
    {
        footballMatches = new List<FootballMatch>();
    }

    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int CouponId { get; set; }
    public int UserId { get; set; }
    public virtual List<FootballMatch> footballMatches { get; set; }
}

如果您需要更多信息,请询问我。

谢谢!

没想到,但我以如此愚蠢的方式找到了解决方案。我的问题的解决方案只是重新添加密钥。一开始我不同意marc_s因为我之前也试过重新加。显然,我第一次尝试重新添加时做错了。

我做错的是将 int 转换为 string 然后转换回 int 而我没有触及实例名称,即 CouponId。 没有起作用。然而,遗憾的是,我还必须更改实例的名称才能使其正常工作。我将行 public int CouponId 更改为 public string CouponName 然后转换回实际名称。现在它显示了预期的行为。

简而言之,简单的解决方案是更改变量和名称的键,然后将它们重新更改为它们的实际名称。就这么简单。

顺便说一下,在执行这些操作时请不要忘记在每个步骤之间更新您的迁移。所以工作流程就像 Change->Update->Change Back->Update.

希望能对遇到同样问题的其他人有所帮助。