5

我有一个表,其主键 id 是一个标识列。我认为当创建新记录时,id 将增加 1。

但是我在调​​试时发现它是0。为什么?

必要的代码:

  public DbSet<testDetails> testDetailRecords { get; set; }
  testDetails test = testContext.testDetailRecords.Create();
  // test.id is 0 when hover over it
  public class testDetails : IEntityWithRelationships
  {
      [Key]
       [Required]
       [Display(Name = "Primary Key", Description = "Primary Key")]
       [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
       public long id { get; set; }
4

4 回答 4

9

直到您使用SaveChanges().

于 2012-11-15T15:59:09.987 回答
5

它是 0,因为它尚未创建。

        TestContext context = new TestContext();

        var increment = context.IncrementTest.Create();
        increment.name = "testbyme";

        context.IncrementTest.Add(increment);


        context.SaveChanges();

这对我来说没有任何异常。

于 2012-11-15T16:05:32.917 回答
1

我认为当创建新记录时,id 将增加 1。

谁这样做?数据库管理系统。唱片目前在哪里?仅在您的应用程序中。

调用testContext.SaveChanges()在数据库中插入记录,之后实体的id属性将被更新。

于 2012-11-15T15:59:15.157 回答
0

SaveChanges() 返回受影响的行数。如果它返回 0,则没有保存任何内容。要检查项目是否已保存:

int rows affected = 0;
if(rows_affected = context.SaveChanges() > 0)
   System.Writeline("Saved!");
else
   System.Writeline("Nothing saved! Check error using try catch");
于 2015-04-13T02:56:09.823 回答