2009-04-28 14 views
2

Ich verwende SubSonic 2.1 für meine Webanwendung. Es hat gut funktioniert, bis vor kurzem habe ich eine Tabelle in meiner SQL Server 2005-Datenbank hinzugefügt, um Benutzerdateien (wie MS Word, PDF, Jpeg, Gif, Tiff-Dateien) zu speichern. Die Dateien werden in einer Spalte namens ReportFile varbinary (max) gespeichert.Erstellungsfehler: 'System.Array' enthält keine Definition für 'Spalten',

Nach SubSonic den Code generiert, baue ich es, und erhalten diese Fehlermeldung:

‚System.Array‘ enthält keine Definition für ‚Spalten‘ und keine Erweiterungsmethode ‚Spalten‘ ein erstes Argument vom Typ akzeptieren ‚System.Array‘ gefunden werden (möglicherweise fehlt eine using-Direktive oder ein Assemblyverweis?)

der säumige Methode:

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

Dann habe ich geprüft Datei ReportFile.cs, und sehen, dass Spalten sind als struct definiert:

#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 

ich gedacht hatte es mit dem varbinary (max) -Spalte zu tun haben kann, so dass ich getestet Code mit einer Testdatenbank zu erzeugen, die auch eine Tabelle mit einer varbinary (max) Spalte enthält, und es funktionierte perfekt.

Aufgrund dieses Fehlers muss ich diese ReportFiles-Methode auskommentieren. Weiß jemand davon? Es ist mysteriös für mich. Irgendeine Problemumgehung? Danke vielmals.

+0

Ich habe dieses Problem mit bestimmten Feldern in meiner Tabelle ('Transaktionscode', 'Schlüsselwort'). Vielleicht kann Rob Conery oder einer der SubSonic Gurus antworten. – kntcnrg

+0

Der Fehler scheint darauf hinzudeuten, dass 'ReportFile' ein Array ist. Wenn Sie mit der Maus darüber fahren, welcher Intellisense-Typ ist das? Ist 'ReportFile' eine statische Klasse mit einer statischen Eigenschaft' Columns'? Tatsächlich; Welche Version von SubSonic verwenden Sie? Und wenn Sie SS3 verwenden, welche T4-Vorlage generiert den Code? – CodingWithSpike

Antwort

1

Es klingt für mich wie ein Namenskonflikt mit einem der Namespaces, die bereits deklariert wurden. Vielleicht ist der Fehler, den du siehst, nicht die ganze Wahrheit. Möglicherweise müssen Sie in der Datei "web.config" regexDictionaryReplace verwenden, um die Spalten in widerspruchsfreie Werte umzubenennen.

0

Um diese Server-Fehler zu beheben Sie die folgenden Namespaces nur hinzufügen,

using System.Linq; 

an der Spitze der Quelle und stellen Sie sicher, einen Verweis auf die System.Core Montage haben.

Verwandte Themen