2016-05-19 70 views
1

我會簡化我的問題。我有1類具有這些屬性: 標識 IdFollower 一些列...實體框架,與另一個實體在一個標識列SaveChanges

與ID = 1。然後我就現有的實體,我想創建一個又一個,並設置IdFollower從一個新的一個現有ID爲。

是否有可能使它只有一個SaveChanges。我嘗試過但沒有運氣。例如:

var existing = context.class.Find(1); 
var nextInLine = new class(){....} 
context.class.Add(nextInLine); 
existing.IdFollower = nextInLine.Id 
context.SaveChanges(); 

我預計EF知道什麼nextInLine是新的記錄(它的狀態是Added),並不會寫「0」 IdFollower現有的實體,而是先救nextInLine,得到它的標識和寫入標識在現有的實體中,然後保存現有的實體。

現在我正在使用它,所以我在context.class.Add(nextInLine)之後有一個額外的SaveChanges()。所以最後它看起來像:

var nextInLine = new class(){....} 
context.class.Add(nextInLine); 
context.SaveChanges(); 
existing.IdFollower = nextInLine.Id 
context.SaveChanges(); 

我已經使用到目前爲止另一個ORM,但我想切換到EF。這個「問題」在ORM中不存在。

它可能與1 SaveChanges()

回答

0

是的,但是,而不是設置FK屬性設置通過導航屬性在existing實體之間的關係:

var existing = context.class.Find(1); 
var nextInLine = new Follower(){....}; 
context.class.Add(nextInLine); 
existing.Follower = nextInLine; 
context.SaveChanges(); 

設置FK屬性時需要涉及與已經另一個現有實體的實體堅持在你的數據庫。 如果您需要更多信息,請點擊這裏link

+0

我試過了(我沒有自引用鏈接)。感謝名單。它總體上合理!歡迎使用 – Bubbi

+0

;) – octavioccl

相關問題