0

我有 POCO 对象,它们的标识符是唯一的并且由数据库自动生成,所以问题是当您出于某种原因想知道数据库将分配给您要插入的下一条记录的下一个标识符时。据我所知,只有在执行 dbContext.SaveChanges() 之后才有可能,所以我想知道我是对的还是有办法知道数据库自动分配的下一个标识符。

4

2 回答 2

1

有没有办法自动知道数据库分配的下一个标识符

好吧,下一个NO。如果你的代码依赖它,你真的需要改变你的设计。

如果您需要标识符来插入相关对象,您应该检查一些其他问题,因为您可以将实体分配给彼此而不是 ID,这样就可以了。

于 2013-06-06T19:09:30.880 回答
0

我同意必须知道身份值是“臭”的评论的一般意图。但另一方面,有时您必须接受给定的设计。

无法真正获取下一个id的值,但是可以通过使用a及时获取分配TransactionScope的id的值。

using (var trans = new TransactionScope())
{
    // Create new object
    ...

    context.SaveChanges();

    int id = newEntity.Id;
    dependentEntity.IdString = string.Format("{0:0000000}", id);

    context.SaveChanges();
    trans.Complete();
}
于 2013-06-06T21:59:03.990 回答