3

データベーステーブルに新しい列を追加しました。列は次のように定義されます。

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

EDMXデータモデルを更新しました。新しい列は問題なく表示されます。C#を使用するASP.NET4.0プラットフォームを使用しています。

Listから継承し、インターフェイスIPagedListを実装するPagedListとして定義されたクラスがあります。

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をインポートしてデータベースから単純な読み取りを実行したところ、正常に機能しました。誰かが似たようなものに出くわしたことがありますか?

長い投稿をお詫びしますが、できるだけ多くの情報を提示したいと思いました。

4

1 に答える 1

0

edmxファイルが間違っていることに関連する同様の問題があり、手動で修正する必要がありました。

これらのファイルは編集が少し難しいので、何が悪かったのかを理解するために、バックアップを削除して、Model.edmxとModel.designer.cs全体を再度追加しました。

次に、古き良きwinmergeを使用して、2セットのファイルを比較し、何が問題であるかを突き止めました。非常に難解で、実際には詳細を思い出せませんが、EDMXセクションの1つからの余分なエントリまたは欠落しているエントリだったと思います。

于 2011-02-06T08:25:20.167 に答える