我有一个表,其主键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; }
答案 0 :(得分:9)
在您使用SaveChanges()
提交记录之前,不会创建记录。
答案 1 :(得分:3)
它是0因为它尚未创建。
TestContext context = new TestContext();
var increment = context.IncrementTest.Create();
increment.name = "testbyme";
context.IncrementTest.Add(increment);
context.SaveChanges();
这样做不会给我带来任何例外。
答案 2 :(得分:1)
我认为创建新记录时,id将增加1。
是谁做的? DBMS。记录目前在哪里?仅在您的申请中。
调用testContext.SaveChanges()
将记录插入数据库,之后将更新实体的id
属性。
答案 3 :(得分: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");