0

我现在只是在设计一个 Web 服务,所以我没有实际的代码,但这可能会影响数据库和应用程序的设计。

我计划有一个数据库表(在 SQL Server 中),它将有一个 bigint 类型的主键,它是自动递增的。现在我假设在 ADO.NET 中我不会在向表中添加新记录时设置此字段。我需要知道的是我如何知道刚刚添加的 ID 是什么。当然,然后我可以在该字段上执行选择 MAX,但 ADO.NET 实际上是否返回新 ID 的值,从而节省了我的开销?

例如,如果我有一些这样的代码:

using (MyEntities context = new MyEntities())
{
    context.Table1.AddObject(new Table1()
    {
        StringColumn1 = "some value",
        StringColumn2 = "some value"
    });

    context.SaveChanges();
}

如果 Table1 中有一个名为 ID 的自动增量 PK,我如何知道刚刚添加的值?

4

2 回答 2

2

使用 Entity Framework,这一切都会自动为您完成:

using (MyEntities context = new MyEntities())
{
    var myNewObject = new Table1()
    {
        StringColumn1 = "some value",
        StringColumn2 = "some value"
    });

    context.Table1.AddObject(myNewObject);

    context.SaveChanges();

    // get the new ID
    var newID = myNewObject.ID;
}

在实体框架中保存将自动更新“自动增量”ID列,您只需在调用.SaveChanges()...

于 2012-07-13T10:33:20.920 回答
1

如果没记错的话,我是通过这种方式实现的,因为 EF 为您获取了 ID

using (MyEntities context = new MyEntities())
{
var table1 =  new Table1()
{
      StringColumn1 = "some value",
      StringColumn2 = "some value"
};

    context.Table1.AddObject(table1);

    context.SaveChanges();

int id = table1.Id;
}
于 2012-07-13T10:34:56.070 回答