【发布时间】:2012-05-25 15:53:41
【问题描述】:
我正在尝试深度加载 EF 对象并将其在缓存中保存一段时间。就我而言,我有一个对象(比如用户),然后是一个内部书籍列表设置为虚拟集合
public virtual ICollection<Books> ListOfBooks { get; set; }
Books 和 User 之间存在外键关系(一切正常)
我正在尝试在静态中心类中深度加载它
public static List<User> LoadAllBooksAndUsers() {
using (MyDB dc = new MyDB())
{
dc.Users.Include("ListOfBooks");
List<User> a = dc.Users.Where(l => l.Status == 1).ToList();
return a;
}
}
在我的调用代码中,我有这样的东西:
var evx = DB.LoadAllBooksAndUsers();
var q = evx.Single(m=>m.name==name);
在调试器或 q.ListOfBooks 中检查 evx 表明 listOfBooks 有一个对象处置异常并且它为空。
这是随机的 - 它似乎偶尔会起作用,我不知道在什么条件下。
我对正在发生的事情一无所知 - 我的理解是使用 .Include() 然后枚举它会加载所有依赖的外键对象,那么为什么该方法不将所有书籍深度加载到用户中?我错过了什么?
(我想对这个对象进行深度加载并缓存一段时间,因为里面的数据经常被使用)
【问题讨论】:
标签: asp.net-mvc-3 entity-framework-4 linq-to-entities entity-framework-4.1