Entity Framework (4.0), как исключить связанную таблицу - PullRequest
1 голос
/ 06 мая 2010

Я только что обновился до версии EF 4.0, где раньше использовал Linq 2. SQL.

У меня есть запрос:

    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 от просмотра таблицы подписок, я просто хочу список пользователей, ни одно из связанных свойств и приведенный выше пример, похоже, не работает для этого.

Cheers, Кохан

Ответы [ 2 ]

2 голосов
/ 07 мая 2010

Спроектируйте свой UserList перед тем, как передать его в сериализатор Json, чтобы он не погрузился ни в одно из сгенерированных EF-свойств.

var UserList = this.repository.GetUsers().Select(user => new {Name = user.Name, Email = user.Email, ...);
1 голос
/ 01 февраля 2016

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

Это будет похоже на следующую строку:

context.Configuration.LazyLoadingEnabled = false;

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

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

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...