实体框架(4.0)如何排除相关表

时间:2010-05-06 15:21:49

标签: linq linq-to-sql entity-framework .net-4.0

在我使用Linq 2 SQL之前,我刚刚更新到使用EF 4.0。

我有一个问题:

    var UserList = this.repository.GetUsers();
    return Json(UserList, JsonRequestBehavior.AllowGet);

这产生了错误:“A circular reference was detected while serializing an object of type

这促使这段代码在L2S中运行良好:

  var UserList = this.repository.GetUsers();
      foreach (User u in UserList){
          u.Subscriptions = null;
      }
  return Json(UserList, JsonRequestBehavior.AllowGet);

如何阻止EF查看订阅表,我只想要用户列表,没有相关的属性和上面的示例似乎不适用于此。

干杯, 钢钣

2 个答案:

答案 0 :(得分:2)

在将UserList传递给Json序列化程序之前对其进行投影,以便它不会潜入任何EF生成的属性。

var UserList = this.repository.GetUsers().Select(user => new {Name = user.Name, Email = user.Email, ...);

答案 1 :(得分:1)

有更简单的方法。
您所要做的就是将上下文配置中的 LazyLoadingEnabled 属性设置为 false

它将非常类似于以下行:

var userList = from u in context.users
               select u;

然后您可以查询如下:

and i haven't tried anything already yet because i have no idea how to do it.  

希望有所帮助