我试图从上下文关闭后的实体中检索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