2010-05-06 3 views
1

Я только что обновил до использования EF 4.0, где до того, как я использовал Linq 2 SQL.Entity Framework (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

1

Существует гораздо более простой подход.
Все, что вам нужно сделать, это установить LazyLoadingEnabled свойство на конфигурации контекста, чтобы ложной

Это будет довольно много, как в следующей строке:

context.Configuration.LazyLoadingEnabled = false; 

И тогда вы можете иметь ваш запрос следующим образом:

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

Надежда помогает

Смежные вопросы