EDMX新列在ToList()调用上生成错误

时间:2011-01-27 19:41:37

标签: c# asp.net linq-to-sql sql-server-2008 edmx

我们在数据库表中添加了一个新列。该列定义如下:

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

我们已经刷新了我们的EDMX数据模型,新列显得很好。我们使用C#在ASP.NET 4.0平台上。

我们有一个定义为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 :(得分:0)

我遇到了一个类似的问题,与需要手动修复的edmx文件有关。

这些文件有点难以编辑,所以要找出错误,我删除了备份并重新添加了整个Model.edmx和Model.designer.cs

然后使用好的旧winmerge我比较了两组文件并找出了什么是错的。这是如此深奥,我实际上无法记住细节,但我认为这是一个EDMX部分的额外或缺失的条目。