我正在創作一個域模型,我稍後將使用EF Code First映射到數據庫。這是我第一個使用Entity Framework的項目,儘管我已經閱讀了一本關於它的書,但我不記得它是如何工作的所有細節。我可以在保存更改之前查詢修改的對象嗎?
在領域模型的一部分,我有一對多的關係。
public class Parent
{
public IList<Child> Children { get; private set; }
}
用戶之後改性的Parent
在內存中的實例,並點擊一個按鈕,那麼這將是時間給該實例持久化到數據庫中。那時,我必須首先在數據庫中存在的實例(保存之前)和存儲器中未保存的修改版本之間運行一些特定於域的比較邏輯。所以我需要查詢數據庫以檢索Parent
實例及其Children
的未修改副本。
EF代碼首先讓我安全地運行這樣的查詢嗎?我只是擔心,當EF運行這樣的查詢時,它會看到每個Child
已經在內存中,因此重用這些實例並覆蓋它們的修改,而不是實例化重複項。在這種情況下,我實際上想要複製品。
如何獲取內存中的實例?最主要的是,如果它沒有被EntityChangeTracker跟蹤,那麼你需要「附加」它並將其狀態標記爲「已修改」,以便當你在上下文中調用SaveChanges時,它可以知道它需要更新。如果你進行查詢,它將被跟蹤,但如果你只是「附加」,它也將被跟蹤,並且需要更少的時間。 – jannagy02