实体框架分配ID

时间:2018-05-25 16:15:04

标签: c# sql-server entity-framework

我正在使用SQL Server数据库处理程序。使用PUT / POST,我将元素添加到数据库中。我在数据上运行一些代码,然后删除它们。现在的问题是,当我添加新数据时,添加的数据会添加越来越多的ID号,而不是从0开始。

我四处搜索,发现了一些我认为会起作用的东西,即在Id上方添加以下行。然而,这并不起作用,并且当放入数据库时​​,我仍然会获得越来越大的Id号。

有解决方法吗?

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

public int ProducedkW { get; set; }
public int ConsumedkW { get; set; }

public string Type { get; set; }
public int DifferencekW { get; set; }

2 个答案:

答案 0 :(得分:0)

我可以想到两种可能的方式:

  1. 截断表而不是删除记录如果它在某些其他表中被引用为外键,它可能会抛出异常。
  2. 在sql server上运行SET IDENTITY_INSERT <table name> ON ,基本上它允许您在标识列中显式输入值。但请记住,您必须在代码中设置ID。 但请记住,您可能会失去专栏的唯一性,因此您必须在代码中以专业方式确保它。

答案 1 :(得分:0)

在评论中提到,听起来好像你不想要一个IDENTITY列,而是一个普通的INT列。

通过删除列的IDENTITY属性,您可以自由控制ID。只需在您的实体上设置ID字段,当您调用DbContext.SaveChanges时,它将处理它。