实体框架调用savechanges插入新数据后,怎么获取新插入行的ID
实体框架调用savechanges插入新数据后,如何获取新插入行的ID
RT,请多指教,谢谢!
------解决方案--------------------
你是用 .NET3.5SP1 还是.NET 4.0? 两者在 SaveChanges() 上签名不同, 3.5中的SaveChanges(bool)已被标识为过时。
不过,只要你的实体(如表T1)是的自增ID是主键,那么在 SaveChanges() 之后(不管使用哪一种方法签名),自增ID总是被自动返回,因为实体已经被重新获取
RT,请多指教,谢谢!
------解决方案--------------------
你是用 .NET3.5SP1 还是.NET 4.0? 两者在 SaveChanges() 上签名不同, 3.5中的SaveChanges(bool)已被标识为过时。
不过,只要你的实体(如表T1)是的自增ID是主键,那么在 SaveChanges() 之后(不管使用哪一种方法签名),自增ID总是被自动返回,因为实体已经被重新获取
- C# code
private void button1_Click(object sender, RoutedEventArgs e) { TestEntities db = new TestEntities(); T1 t1 = new T1() { sname = "A" }; db.T1.AddObject(t1); db.SaveChanges(); // .NET 3.5 // db.SaveChanges(false); // db.SaveChanges(true); // .NET 4.0 // db.SaveChanges( System.Data.Objects.SaveOptions.None ); // db.SaveChanges(SaveOptions.AcceptAllChangesAfterSave); // db.SaveChanges(SaveOptions.DetectChangesBeforeSave); MessageBox.Show(t1.sid.ToString()); }
------解决方案--------------------
SET @ID = SCOPE_IDENTITY存储过程