【问题标题】:During Linq-to-SQL insert, when does an auto-increment primary key value become available?在 Linq-to-SQL 插入期间,自增主键值何时可用?
【发布时间】:2014-06-10 18:56:22
【问题描述】:

InsertOnSubmit 之后、SubmitChanges 之后或其他时间是否可以访问主键列的自动生成值?

【问题讨论】:

    标签: c# linq-to-sql


    【解决方案1】:

    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,我不确定您的评论与我的回答有何关系,但就否决票而言,您的说法不正确。在 SubmitChanges 之后,不必刷新对象即可获得 ID。如果您之前遇到过这个问题,那么可能涉及其他问题。
    • 这与您的答案有关,因为您的代码不起作用。我讨厌这个网站。
    • @Jasmine,我的代码不起作用??并且OP接受了它?使用新的 dbml 文件创建一个新的控制台应用程序并尝试上面的代码,这正是我为找到答案所做的。它有效。
    • 嗯,在我的情况下,我使用的是真实世界的东西,而不是测试应用程序。身份列在刷新之前不可用。不会争论的。这就是发生的事情。是的,我知道这与文档相反。
    猜你喜欢
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    相关资源
    最近更新 更多