构建错误:'System.Array'不包含'Columns'的定义,

时间:2009-04-28 13:28:06

标签: subsonic

我在我的网络应用程序中使用SubSonic 2.1。它一直工作正常,直到最近我在我的SQL Server 2005数据库中添加了一个表来存储用户文件(例如MS Word,PDF,Jpeg,Gif,Tiff文件)。这些文件存储在名为ReportFile varbinary(max)的列中。

SubSonic生成代码后,我构建它,并得到此错误:

'System.Array'不包含'Columns'的定义,并且没有扩展方法'Columns'接受类型'System.Array'的第一个参数可以找到(你是否缺少using指令或汇编引用? )

违规方法:

public MyWebApp.ReportFileCollection ReportFiles()
{
    return newMyWebApp.ReportFileCollection().Where(ReportFile.Columns.ReportID, ReportID).Load();
}

然后,我检查了文件ReportFile.cs,并确实看到Columns被定义为struct:

#region Columns Struct
public struct Columns
{
     public static string ReportFileID = @"ReportFileID";
     public static string FileName = @"FileName";
     public static string ReportID = @"ReportID";
     public static string MimeType = @"MimeType";
     public static string FileSize = @"FileSize";
     public static string FileData = @"FileData";
     public static string UploadDate = @"UploadDate";

}
#endregion

我原本以为它可能与varbinary(max)列有关,所以我测试了使用Test数据库生成代码,该数据库还包含一个带有varbinary(max)列的表,并且它运行良好。

由于这个错误,我必须注释掉这个ReportFiles方法。谁知道这个?这对我来说很神秘。任何解决方法?非常感谢。

2 个答案:

答案 0 :(得分:1)

听起来像是与已经声明的命名空间之一的命名冲突。也许你看到的错误并没有告诉你全部真相。您可能需要在web.config中使用regexDictionaryReplace将列重命名为非冲突值。

答案 1 :(得分:0)

要解决此服务器端错误,您只需添加以下命名空间

using System.Linq;

位于源代码的顶部,并确保您已获得对 System.Core 程序集的引用。