我試圖從上下文關閉後的實體中檢索OriginalValues,但我得到CurrentValues。任何建議? 無法將實體連接到對象,我必須關閉它。想想一個通用模型,下面的模型只是一個示例。上下文關閉後從實體獲取OriginalValues實體框架
爲了讓你understaind,我在這裏的樣品(如參考數據庫可以在這裏找到:http://msdn.microsoft.com/en-us/data/jj592677.aspx)
public static void Sample1()
{
var blog = null;
//1: get from context
using (var context = new BloggingContext())
{
blog = context.Blogs.Find(1);
//suppose -> blog.Name == "Test 1";
}
blog.Name = "Test 2"; //set name
//The function here set the blog name record to "Test 3", using straight SQL
SetBlogNameUsingExternalSQL("Test 3", 1);
//2: get original values
using (var context = new BloggingContext())
{
context.Blogs.Attach(blog);
var currentValues = context.Entry(blog).CurrentValues;
//currentValues.Name is "Test 2", expected is "Test 2" => OK
var databaseValues = context.Entry(blog).GetDatabaseValues();
//databaseValues.Name is "Test 3", expected is "Test 3" => OK
var originalValues = context.Entry(blog).OriginalValues;
// -------> originalValues.Name is "Test 2", expected is "Test 1" => :(
}
}
注:這並不能幫助我很多:EF 5 : OriginalValues are lost when context is disposed
'OriginalValues'總是爲當前_context_存儲,而不是全局存儲。當處理第一個上下文時,它不再存在,所以那些'OriginalValues'消失了。第二個上下文將它的'OriginalValues'作爲它初次附着在它上面的對象存儲,即「Test 2」。如果您需要訪問「測試1」,則必須將其與任何EF上下文分開存儲。 – Rhumborl