我得到來自EF的Code First一些奇怪的行爲時,我對象添加到數據庫,並選擇它從同一個HTTP請求的數據庫恢復。EF代碼第一次沒有返回對象DynamicProxies後才HTTP請求完成
當我找回它,它返回的對象類型,而不是類型System.Data.Entity.DynamicProxies這麼懶加載不起作用。
如果我在未來的HTTP請求檢索相同的對象則是返回類型System.Data.Entity.DynamicProxies和延遲加載工作正常。
是否需要對對象或上下文執行某些操作以獲取DynamicProxy返回?或者EF Code First的工作原理是什麼?如果是的話,我該如何解決這個問題?
我甚至使用NuGet包中的示例代碼重新創建了該問題。
下面是我用來重現問題的代碼:當我在AddPost行動得到POST2
public ActionResult Index() {
var blogContext = new BlogContext();
var posts = blogContext.Posts;
ViewBag.Message = "Welcome to ASP.NET MVC!";
ViewBag.Posts = posts;
return View();
}
public ActionResult AddPost() {
var blogContext = new BlogContext();
var post = new Post() {
PublishDate = DateTime.Now,
Text = "Text",
Title = "Title",
};
blogContext.Posts.Add(post);
blogContext.SaveChanges();
var post2 = blogContext.Posts.Find(post.ID);
return RedirectToAction("Index");
}
public ActionResult GetPost(int id) {
var blogContext = new BlogContext();
var post = blogContext.Posts.Find(id);
ViewBag.Post = post;
return View();
}
它的類型是MvcApplication.Models.Post返回那裏,當我回到同一職位在GetPost動作它是類型System.Data.Entity.DynamicProxies.Post。
上述代碼是使用MVC 3工具更新中的默認MVC3應用程序重新創建的。我還安裝了以下NuGet包:EntityFramework.Sample和EntityFramework.SqlServerCompact。
如果有人可以重新創建問題或有解決方案,那麼將不勝感激。