日期:2014-05-20  浏览次数:20971 次

实体框架调用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存储过程