Ошибка: ASP.NET: «Доступ к DataContext после удаления.» - PullRequest
0 голосов
/ 16 октября 2011

Есть две таблицы: Account (id) и BranchId(Id,Name,AccountId) и у меня есть этот код в pageload

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
       using (var db = new SitesDataContext())
       {
           BranchGrid.DataSource = db.Branches.Where(b=>b.AccountId == loggedInUser.AccountId).ToList();
                    BranchGrid.DataBind();
       }
    }            
}

Я понимаю о Linq и ленивой загрузке, и именно поэтому я использовал ToList() Но я все еще получал ошибку.

Теперь, если я удалю связь ч / б Филиал и Учетная запись, приведенный выше код работает нормально. Однако это вызывает исключение при ассоциации.

Как это можно решить, сохраняя при этом связь?

Спасибо

Ответы [ 2 ]

3 голосов
/ 16 октября 2011

Даже с помощью ToList () ваши учетные записи загружаются не полностью, только филиалы

Вы можете либо:

  • удалите использование {} и позвольте сборщику мусора выполнить свою работу

или

  • добавить LoadOptions к тексту данных, чтобы быстро загрузить учетные записи ветвями (что-то вроде этого)

     DataLoadOptions options = new DataLoadOptions();
     options.LoadWith<Branches>(b => b.Account);
     Context.LoadOptions = options;
    
0 голосов
/ 16 октября 2011

Где-то доступ к свойству Account экземпляра Branch осуществляется. Вы должны найти код, который обращается к этому свойству, и остановить его.

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