Новый столбец EDMX генерирует ошибку при вызове ToList () - PullRequest
3 голосов
/ 27 января 2011

Мы добавили новый столбец в таблицу базы данных.Столбец определен следующим образом:

Name: DisplayAsSoldOut
Type: Boolean
NOT NULLABLE
Default Value: 0

Мы обновили нашу модель данных EDMX, и новый столбец выглядит просто отлично.Мы на платформе ASP.NET 4.0, используя C #.

У нас есть класс, определенный как PagedList, который наследует от List и обеспечивает интерфейс IPagedList

В PagedList у нас есть следующий метод:

protected void Initialize(IQueryable<T> source, int index, int pageSize, int? totalCount)
{
    if (index < 0)
    { throw new ArgumentOutOfRangeException("PageIndex cannot be below 0."); }

    if (pageSize < 1)
    { throw new ArgumentOutOfRangeException("PageSize cannot be less than 1."); }

    if (source == null)
    { source = new List<T>().AsQueryable(); }

    if (!totalCount.HasValue)
    { TotalItemCount = source.Count(); }

    PageSize = pageSize;
    PageIndex = index;

    if (TotalItemCount > 0)
    { PageCount = (int)Math.Ceiling(TotalItemCount / (double)PageSize); }
    else
    { PageCount = 0; }

    HasPreviousPage = (PageIndex > 0);
    HasNextPage = (PageIndex < (PageCount - 1));
    IsFirstPage = (PageIndex <= 0);
    IsLastPage = (PageIndex >= (PageCount - 1));

    if (TotalItemCount > 0)
    { AddRange(source.Skip((index) * pageSize).Take(pageSize).ToList()); }
}

Когда мы достигаем следующей строки:

{ AddRange(source.Skip((index) * pageSize).Take(pageSize).ToList()); }

мы получаем следующее исключение ...

Type: System.Data.EntityCommandExecutionException
Inner Exception: "Invalid column name 'DisplayAsSoldOut'."

Я пытался найти этот типисключение, но безрезультатно.Столбец отображается в наборе данных EDMX просто отлично.Я даже создал небольшую одноразовую программу и импортировал EDMX для простого чтения из базы данных, и она работала нормально.Кто-нибудь сталкивался с чем-то подобным?

Я прошу прощения за длинный пост, но хотел представить как можно больше информации.

1 Ответ

0 голосов
/ 06 февраля 2011

У меня была похожая проблема, которая была связана с тем, что файл edmx был неправильно исправлен вручную.

Эти файлы немного сложно редактировать, поэтому, чтобы выяснить, в чем дело, я удалил резервную копию и заново добавил все Model.edmx и Model.designer.cs

Затем, используя старый добрый winmerge, я сравнил два набора файлов и выяснил, что не так. Это было настолько эзотерично, что я не могу вспомнить детали, но я думаю, что это была лишняя или отсутствующая запись в одном из разделов EDMX.

...