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 を確認したところ、列が構造体として定義されていることがわかりました。
#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) 列を持つテーブルも含む Test データベースでコードの生成をテストしたところ、完全に機能しました。
このエラーのため、この ReportFiles メソッドをコメントアウトする必要があります。誰でもこれについて知っていますか?私には不思議です。回避策はありますか?どうもありがとう。