2012-09-13 63 views
1

我正在使用EF的最新版本並試圖解決如何製作對象的副本並將其作爲新記錄插入,但是使對象的所有屬性指向不同的對象仍然指向複製後的那些對象。Entity Framework複製對象用於版本控制目的

所以我有一個'軟件'的對象,有一個版本,並具有作者和公司屬性,我做這個軟件的副本和更新版本,作者和公司保持不變,但我有一個新的記錄它。所以從技術上講,如果需要的話,我可以回滾到以前的版本。

當前獲取對象,更新它並將其作爲new插入將創建期望的鏈接對象的新版本。我知道你可以附加和分離對象,似乎是正確的方式,但不知道當你想要一個新的記錄時它是如何工作的。

感謝

回答

4

當你更新的對象,調用調用SaveChanges()之前,你可以修改EntityState來添加,因此EF將然後添加實體如新,而不是更新現有的實體。

如果你有一個的DbContext:

YourContext.Entry(YourEntity).State = EntityState.Added; 

如果你有一個ObjectContext的:

YourContext.ObjectStateManager.ChangeObjectState(YourEntity, EntityState.Added); 
+0

我還使用,將不得不向它提出的變化斷開連接的對象。我認爲這仍然會工作? – JeremyBeadle

+0

在修改狀態之前,您需要將其附加到您的上下文,但是。在附加,修改狀態之後,它將爲您的更新創建一個新行。 –

+0

很酷,非常感謝您的幫助 – JeremyBeadle