2010-05-06 35 views
1

我剛剛更新爲使用EF 4.0,之前我使用Linq 2 SQL。實體框架(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

項目的UserList的你將它傳遞給JSON序列化,這樣它不會潛入任何EF生成的屬性之前。

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

當然:) - 謝謝你。任務完成。 – 4imble 2010-05-10 08:05:15

1

它有更簡單的方法。
所有你需要做的是設置LazyLoadingEnabled您context配置屬性

這將是非常像的下面一行:

context.Configuration.LazyLoadingEnabled = false; 

然後你可以有你的查詢如下:

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

希望它有助於