C# 在Linq到SQL插入期间,自动递增主键值何时可用?

C# 在Linq到SQL插入期间,自动递增主键值何时可用?,c#,linq-to-sql,C#,Linq To Sql,主键列的自动生成值在insertonsumbimit之后、在SubmitChanges之后或在其他某个时间可访问吗?在SubmitChanges调用之后可用 只是做了一个简单的测试 DBDataContext db = new DBDataContext(); TestTable tb = new TestTable(); tb.Name = "Some Name"; db.TestTables.InsertOnSubmit(tb); Console.WriteLine(tb.ID); //r

主键列的自动生成值在
insertonsumbimit
之后、在
SubmitChanges
之后或在其他某个时间可访问吗?

SubmitChanges
调用之后可用

只是做了一个简单的测试

DBDataContext db = new DBDataContext();
TestTable tb = new TestTable();
tb.Name = "Some Name";
db.TestTables.InsertOnSubmit(tb);

Console.WriteLine(tb.ID); //returned 0

db.SubmitChanges();
Console.WriteLine(tb.ID); //returned 1

SubmitChanges
0之前作为ID返回,而
SubmitChanges
之后返回递增的ID

我的代码不是这样的。如果OP有这个问题,也许他和我在同一条船上。我不知道是什么原因造成的,但如果我不确定的话,你认为我会留下这么简短、明确的答案吗?@Jasmine,我不确定你的评论与我的答案有什么关系,但就否决票而言,你的说法是不对的。提交更改后,无需刷新对象即可获得ID。如果您以前有过这个问题,那么可能还涉及到其他问题。这与您的答案有关,因为您的代码不起作用。我讨厌这个网站。@Jasmine,我的代码不起作用??OP接受了吗??用新的dbml文件创建一个新的控制台应用程序,并尝试上面的代码,这正是我找到答案的方法。在我的例子中,我使用的是真实世界的东西,而不是测试应用。标识列在刷新之前不可用。我不会争辩的。事情就是这样。是的,我知道这与文件相反。