在我使用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查看订阅表,我只想要用户列表,没有相关的属性和上面的示例似乎不适用于此。
干杯, 钢钣
答案 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.
希望有所帮助