0
我繼承了一些代碼,其中一個現有的DbContext被分配到一個局部變量像這樣:實體框架 - 的DbContext平等
using(var context = new DBContext())
{
try
{
...
var localContext = context;
MethodThatAddsStuffToContext(localContext);
...
}
catch etc. etc.
context.SaveChanges();
}
我的問題是:我知道,不同的背景下會持續自己的變化並且,他們將只能通過其他上下文後撈起保存,但:
- 執行上下文使用引用相等,這意味着
context
以上localContext
將共享相同的補充,並保存一個將承諾在其他變化? - 如果我有兩個現有的獨立上下文,並且我保存一個,那麼將在任何未來查詢的新上下文中自動提取這些更改,或者在創建它時確保上下文「緩存」(非常確定回答這是前者,但只是想澄清)?
- 上面的代碼片段是不好的做法嗎?我想不出任何可行的情況。
context和localContext只是兩個指向DBContext實例的變量。所以你不能說他們「分享」某種東西,或者說他們是「分離的」。這裏只有一個背景,而不是兩個。 – Evk
@Evk,那麼參考平等呢?這就是我所問的。我找不到任何有關DBContexts的.Equals行爲的任何文檔,因此是個問題。我看不到任何理由*爲什麼有人會做前任建築師所做的事情,如果這不是價值平等。 –
那麼所有的類(不是結構體)默認使用引用相等,除非類作者以某種方式改變了這種行爲。但是對DbContext使用值相等沒有任何意義,無法想象這可能意味着什麼。在您提供的代碼片段中複製變量絕對沒有意義。 – Evk