2

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

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

“System.Array”不包含“Columns”的定义,并且找不到接受“System.Array”类型的第一个参数的扩展方法“Columns”(您是否缺少 using 指令或程序集引用?)

违规方法:

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

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

#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 方法。有人知道吗?这对我来说很神秘。任何解决方法?非常感谢。

4

2 回答 2

1

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

于 2009-08-24T17:36:45.017 回答
0

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

using System.Linq;

在源代码的顶部,并确保您有对System.Core程序集的引用。

于 2014-08-01T10:55:07.253 回答