我只是在设计一个Web服务,因此我没有实际的代码,但这可能会影响数据库和应用程序设计。C#ADO.NET确定新自动递增主键的值?
我打算有一个数据库表(在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();
}
如果有表1中的一个自动增量PK叫ID,我怎么知道刚刚添加的价值?
这是使用实体框架?如果是这样:当你插入时,EF应该照顾自动更新这些ID。如果您使用的是原始ADO.NET,请查看使用INSERT语句的OUTPUT子句,或者查看SCOPE_IDENTITY()在INSERT后面调用(在同一个SQL批处理中) – 2012-07-13 10:30:32
是的,我正在使用EF。 @marc_s - 我知道它会这样做。这不是问题。我怎么知道这个价值是什么? – Jonnster 2012-07-13 10:31:28
您需要保留对要插入的对象的引用,然后在调用'.SaveChanges()'后,可以从该对象中读出'ID'属性。 – 2012-07-13 10:32:25