我在我的网络应用程序中使用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方法。谁知道这个?这对我来说很神秘。任何解决方法?非常感谢。
答案 0 :(得分:1)
听起来像是与已经声明的命名空间之一的命名冲突。也许你看到的错误并没有告诉你全部真相。您可能需要在web.config中使用regexDictionaryReplace将列重命名为非冲突值。
答案 1 :(得分:0)
要解决此服务器端错误,您只需添加以下命名空间
using System.Linq;
位于源代码的顶部,并确保您已获得对 System.Core 程序集的引用。