Subsonic 生成错误:';系统数组';不包含';列';,

Subsonic 生成错误:';系统数组';不包含';列';,,subsonic,Subsonic,我正在为我的web应用程序使用亚音速2.1。它一直运行良好,直到最近我在SQLServer2005数据库中添加了一个表来存储用户文件(如MS Word、PDF、Jpeg、Gif、Tiff文件)。这些文件存储在名为ReportFile varbinary(max)的列中 亚音速生成代码后,我构建代码,并得到以下错误: “System.Array”不包含“Columns”的定义,并且找不到接受“System.Array”类型的第一个参数的扩展方法“Columns”(是否缺少using指令或程序集引用

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

亚音速生成代码后,我构建代码,并得到以下错误:

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

冒犯的方法:

public MyWebApp.ReportFileCollection ReportFiles()
{
    return newMyWebApp.ReportFileCollection().Where(ReportFile.Columns.ReportID, ReportID).Load();
}
然后,我检查了文件ReportFile.cs,确实看到列被定义为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)列有关,所以我用一个测试数据库测试生成代码,该数据库还包含一个带有varbinary(max)列的表,它工作得非常好


由于这个错误,我不得不注释掉这个ReportFiles方法。有人知道这件事吗?这对我来说很神秘。有解决办法吗?非常感谢。

在我看来,这似乎与已声明的一个名称空间存在命名冲突。也许你看到的错误并没有告诉你全部真相。您可能需要在web.config中使用以将列重命名为非冲突值。

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

using System.Linq;

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

我的表中的某些字段(“TransactionCode”、“关键字”)遇到了此问题。也许罗布·科纳利或某位亚音速大师可以回答。这个错误似乎表明
ReportFile
是一个数组。如果您将鼠标移到它上面,Intellisense会说它是什么类型的?
ReportFile
是一个具有静态属性
列的静态类吗?事实上你用的是哪种亚音速?如果您使用的是SS3,那么生成代码的是哪个T4模板?