2017-07-04 38 views
0

這個問題在這個線程 How can I force entity framework to insert identity columns?力的實體框架添加標識列

但我需要知道,假如我

dataContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[User] OFF"); 

之前,我打電話調用SaveChanges()方法解決了我它會有相同的效果嗎?我的意思是爲什麼我應該在調用SaveChanges()後關閉Identity。

+0

我認爲這很簡單,你正在設置身份,一旦你完成了你的操作,你又將它重新設置爲表格的舊狀態。 :) –

+0

我知道,我在這裏要求在SaveChanges之前或之後重置它,它們是否與底層數據庫具有相同的效果? –

+0

我之前或之後詢問的原因,因爲在我的情況下,我同時寫入2個表格(第二個依賴於第一個表格),並且由於您無法同時將標識設置爲2個表格,我需要首先爲第一個表啓用標識,在完成後啓用第二個表的標識,然後調用SaveChanges()。 –

回答

0

幾天前我正在做這件事。使用

dataContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[Table] ON"); 

dataContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[Table] OFF"); 

什麼也沒做。

我不得不使用SQL命令打開它,做了我想做的事,然後在同一個命令中關閉它。

+1

對我來說,我提到的線程中的解決方案完美無缺,但在這裏我問的是在SaveChanges調用之後還是之前設置Identity OFF。 –

+0

我將不得不有另一場比賽,我無法得到它的工作。使用EF時,它保持爲自動增量編號。我之後可能會說,直到那一刻,所有東西都保存在緩衝區中。 EF在SaveChanges的一次交易中完成所有工作 –