我正在使用带有DbContext的EF4.3。
我有存储在Cookie中的实体。
当用户返回网站时,我目前正在将Cookie值解析为List,但实体“BookmarkedDeals”的导航属性为“Deal”,我想将列表设为IQueryable,这样我就可以简单地附上导航属性要么是急切要么是懒惰加载
获得一份清单后,这就是我最初的尝试;
List<BookmarkedDeals> bd = // populate it from cookie
var query = bd.AsQueryable().Include("Deal");
但是,交易无效。
任何人都知道如何实现这一目标?
答案 0 :(得分:0)
您的“从Cookie填充”代码需要返回IQueryable<BookmarkedDeals>
而不是将其转换为列表。那,或者您需要将.Include("Deal")
的调用直接添加到该代码。
对List对象或任何其他本身没有与数据库实时连接的东西进行AsQueryable()
将永远不会有效。
编辑:我没有完全阅读您的问题。如果实体本身存储在cookie中,则不起作用。我会将ID存储在cookie中,并根据这些ID执行包含“Deal”的查询。
答案 1 :(得分:0)
在将列表放入cookie之前,您是否急于加载nav属性?如果没有,你应该从那开始。
或者,如果将其附加到上下文,则可以加载nav属性。
var db = new YourContext();
foreach (var deal in bd)
db.Entry(deal).Reference(b => b.Deal).Load();