实体框架 - 从List <t> </t>获取相关实体

时间:2012-08-29 17:45:26

标签: .net linq entity-framework entity-framework-4.3

我正在使用带有DbContext的EF4.3。

我有存储在Cookie中的实体。

当用户返回网站时,我目前正在将Cookie值解析为List,但实体“BookmarkedDeals”的导航属性为“Deal”,我想将列表设为IQueryable,这样我就可以简单地附上导航属性要么是急切要么是懒惰加载

获得一份清单后,这就是我最初的尝试;

List<BookmarkedDeals> bd = // populate it from cookie

var query = bd.AsQueryable().Include("Deal");

但是,交易无效。

任何人都知道如何实现这一目标?

2 个答案:

答案 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();