EF Core為自動增量int字段分配負序號

c# entity-framework-core sql-server

當調用上下文中的Attach方法將對象附加到上下文時,應該將負序號臨時分配給Identity屬性。在我的情況下,該值似乎是永久性的,最終將對象保存到數據庫時會出錯。

 public virtual void Insert(TEntity entity)
    {
        entity.ObjectState = ObjectState.Added;
        _dbSet.Attach(entity);
        _context.SyncObjectState<TEntity>(entity);
    }

 public class Tier:Entity
{
    public Tier()
    {

    }
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int TierID { get; set; }
    public string CountryID { get; set; }
    public string TierName { get; set; }
    public int TierNo { get; set; }

    public virtual ICollection<AdministrativeStructure> AdministrativeStructures { get; set; }

    public Country Country { get; set; }
}

我正在使用Entityframework核心1.1.0與MSSQL Server 2016

熱門答案

讓我們來看看。如果您創建一個具有此類屬性的類,並且不會為其提供任何輸入,則Integer將具有以下值:

0

碼:

class Program
{   
  static void Main(string[] args)
  {
      tmpClass testClass = new tmpClass();
      Debug.WriteLine(testClass.IntTest);


  }

  public class tmpClass
  {
      public int IntTest { get; set; }
  }
}

你可以看到我沒有操縱任何東西。值為零, 0 ,來自Int的默認值。您說您使用TierID作為主鍵值。你的表是否知道如何處理這個問題,比如它會給它一個ID,還是你需要給它一個ID?也許是錯誤發生的地方。錯誤的主鍵。

在您的情況下,似乎數據庫生成似乎不正常。

MSDN文檔

嘗試:

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


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow