我正在製作一個調查程序,其中包含作爲實體從數據庫中提取的問題列表。在調查過程中,可以編輯實體的屬性,但我不希望這些更改持久存在數據庫中。因此,我將這些問題在加載到dbcontext
後分離,並通過字典訪問它們。使用Entity Framework保存更改會導致分離的實體重複
當我嘗試保存對數據庫的答案時出現問題。由於答案實體與問題實體(已被分離)相關,因此將一個全新的問題實體添加到數據庫中。我不確定爲什麼會出現這種情況,因爲添加的答案實體包含分離實體的正確ID(當我在調試器中查看它時)。但是,保存更改後,它會更新爲新創建的重複實體的ID。
有沒有辦法阻止這種行爲?或者,有沒有方法可以對實體進行更改,並且即使在上下文中調用SaveChanges
以便將答案或日誌條目寫入數據庫時,也不會將它們保存到數據庫?
這裏是一個負載,然後detatches問題(項目)的代碼:
public FixedLengthBlockElementRuntime(FixedLengthBlock block, RuntimeContext context) : base(block, context)
{
this._items = ((FixedLengthBlock)this.Element).ItemBank.Items.OfType<FixedLengthItem>().ToDictionary(x => x.ItemName, x => x);
foreach(FixedLengthItem fixedLengthItem in this._items.Values)
{
this.Context.DetachEntity(fixedLengthItem);
}
}
這裏是添加重複條目代碼:
public void SetResponse(Response response)
{
response.Session = this.Session;
this.DbContext.Responses.AddObject(response);
this.DbContext.SaveChanges();
}
需要注意的是響應具有適當的ItemId直到保存更改。
請添加代碼 –
你在哪裏連接問題的答案嗎? –
通過edmx文件中的關聯。所以我相信它是自動的。 – Scottingham