0


0

VS2008を介してサブコマンダーを使用するSUBSONICにより、次のエラーが発生します-助けてください

サブコマンダーを使用してdalを生成しました。 私はvb.netとsqlexpressおよび.net 3.5を使用しています

私のwebconfigは次のようになります


私の問題は、ビルドプロバイダーをコメントアウトすると(サブコマンダーを使用してクラスを生成するときに使用しなかったと考えていたため)、aspxコードビハインド内でkimdataをインポートしてクラスにアクセスできないことです。

ただし、これをそのままにしておくと(つまりコメントアウトしないで)、Visual Studioでコードをデバッグすると200を超えるエラーが発生し、エラーメッセージは「ステートメントはメソッド本体の外に表示できません」です

エラーは、デバッグ時にこれをコンパイルしたapp_codeを示しているようです、これはc#であり、vbを使用しているim、生成するクラスはvb、デフォルト言語はvbですので、なぜこれがc#であり、これが理由ですエラーが発生していますか? または他の理由がありますか?多くのエラーがあるようにアプリが実行されないため、どうすれば解決できますか?

#ExternalChecksum("d:\dscott\windows\Visual Studio 2008\WebSites\KimV2\App_Code\builder.abp","{406ea660-64cf-4c82-b6f0-42d48172a799}","ECAA88F7FA0BF610A5A26CF545DCD3AA")
using System;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Data.Common;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Xml;
using System.Xml.Serialization;
using SubSonic;
using SubSonic.Utilities;

namespace kimdata
{
 ///
 /// Strongly-typed collection for the AlertMessage class.
 ///
    [Serializable]
 public partial class AlertMessageCollection : ActiveList
 {
  public AlertMessageCollection() {}

        ///
  /// Filters an existing collection based on the set criteria. This is an in-memory filter
  /// Thanks to developingchris for this!
        ///
        /// AlertMessageCollection
  public AlertMessageCollection Filter()
        {
            for (int i = this.Count - 1; i > -1; i--)
            {
                AlertMessage o = this[i];
                foreach (SubSonic.Where w in this.wheres)
                {
                    bool remove = false;
                    System.Reflection.PropertyInfo pi = o.GetType().GetProperty(w.ColumnName);
                    if (pi.CanRead)
                    {
                        object val = pi.GetValue(o, null);
                        switch (w.Comparison)
                        {
                            case SubSonic.Comparison.Equals:
                                if (!val.Equals(w.ParameterValue))
                                {
                                    remove = true;
                                }
                                break;
                        }
                    }
                    if (remove)
                    {
                        this.Remove(o);
                        break;
                    }
                }
            }
            return this;
        }


 }
 ///
 /// This is an ActiveRecord class which wraps the alertMessages table.
 ///
 [Serializable]
 public partial class AlertMessage : ActiveRecord, IActiveRecord
 {
  #region .ctors and Default Settings

  public AlertMessage()
  {
    SetSQLProps();
    InitSetDefaults();
    MarkNew();
  }

  private void InitSetDefaults() { SetDefaults(); }

  public AlertMessage(bool useDatabaseDefaults)
  {
   SetSQLProps();
   if(useDatabaseDefaults)
    ForceDefaults();
   MarkNew();
  }

  public AlertMessage(object keyID)
  {
   SetSQLProps();
   InitSetDefaults();
   LoadByKey(keyID);
  }

  public AlertMessage(string columnName, object columnValue)
  {
   SetSQLProps();
   InitSetDefaults();
   LoadByParam(columnName,columnValue);
  }

  protected static void SetSQLProps() { GetTableSchema(); }

  #endregion

  #region Schema and Query Accessor
  public static Query CreateQuery() { return new Query(Schema); }
  public static TableSchema.Table Schema
  {
   get
   {
    if (BaseSchema == null)
     SetSQLProps();
    return BaseSchema;
   }
  }

  private static void GetTableSchema()
  {
   if(!IsSchemaInitialized)
   {
    //Schema declaration
    TableSchema.Table schema = new TableSchema.Table("alertMessages", TableType.Table, DataService.GetInstance("kimAppProvider"));
    schema.Columns = new TableSchema.TableColumnCollection();
    schema.SchemaName = @"dbo";
    //columns

    TableSchema.TableColumn colvarMessageID = new TableSchema.TableColumn(schema);
    colvarMessageID.ColumnName = "messageID";
    colvarMessageID.DataType = DbType.Int32;
    colvarMessageID.MaxLength = 0;
    colvarMessageID.AutoIncrement = true;
    colvarMessageID.IsNullable = false;
    colvarMessageID.IsPrimaryKey = true;
    colvarMessageID.IsForeignKey = false;
    colvarMessageID.IsReadOnly = false;
    colvarMessageID.DefaultSetting = @"";
    colvarMessageID.ForeignKeyTableName = "";
    schema.Columns.Add(colvarMessageID);

    TableSchema.TableColumn colvarDocumentType = new TableSchema.TableColumn(schema);
    colvarDocumentType.ColumnName = "documentType";
    colvarDocumentType.DataType = DbType.AnsiString;
    colvarDocumentType.MaxLength = 50;
    colvarDocumentType.AutoIncrement = false;
    colvarDocumentType.IsNullable = false;
    colvarDocumentType.IsPrimaryKey = false;
    colvarDocumentType.IsForeignKey = false;
    colvarDocumentType.IsReadOnly = false;
    colvarDocumentType.DefaultSetting = @"";
    colvarDocumentType.ForeignKeyTableName = "";
    schema.Columns.Add(colvarDocumentType);

    TableSchema.TableColumn colvarMessageTitle = new TableSchema.TableColumn(schema);
    colvarMessageTitle.ColumnName = "messageTitle";
    colvarMessageTitle.DataType = DbType.AnsiString;
    colvarMessageTitle.MaxLength = 200;
    colvarMessageTitle.AutoIncrement = false;
    colvarMessageTitle.IsNullable = false;
    colvarMessageTitle.IsPrimaryKey = false;
    colvarMessageTitle.IsForeignKey = false;
    colvarMessageTitle.IsReadOnly = false;
    colvarMessageTitle.DefaultSetting = @"";
    colvarMessageTitle.ForeignKeyTableName = "";
    schema.Columns.Add(colvarMessageTitle);

    TableSchema.TableColumn colvarMsgPublishDate = new TableSchema.TableColumn(schema);
    colvarMsgPublishDate.ColumnName = "msgPublishDate";
    colvarMsgPublishDate.DataType = DbType.DateTime;
    colvarMsgPublishDate.MaxLength = 0;
    colvarMsgPublishDate.AutoIncrement = false;
    colvarMsgPublishDate.IsNullable = false;
    colvarMsgPublishDate.IsPrimaryKey = false;
    colvarMsgPublishDate.IsForeignKey = false;
    colvarMsgPublishDate.IsReadOnly = false;
    colvarMsgPublishDate.DefaultSetting = @"";
    colvarMsgPublishDate.ForeignKeyTableName = "";
    schema.Columns.Add(colvarMsgPublishDate);

    TableSchema.TableColumn colvarXml = new TableSchema.TableColumn(schema);
    colvarXml.ColumnName = "xml";
    colvarXml.DataType = DbType.String;
    colvarXml.MaxLength = 1073741823;
    colvarXml.AutoIncrement = false;
    colvarXml.IsNullable = false;
    colvarXml.IsPrimaryKey = false;
    colvarXml.IsForeignKey = false;
    colvarXml.IsReadOnly = false;
    colvarXml.DefaultSetting = @"";
    colvarXml.ForeignKeyTableName = "";
    schema.Columns.Add(colvarXml);

    TableSchema.TableColumn colvarCreatedOn = new TableSchema.TableColumn(schema);
    colvarCreatedOn.ColumnName = "createdOn";
    colvarCreatedOn.DataType = DbType.DateTime;
    colvarCreatedOn.MaxLength = 0;
    colvarCreatedOn.AutoIncrement = false;
    colvarCreatedOn.IsNullable = false;
    colvarCreatedOn.IsPrimaryKey = false;
    colvarCreatedOn.IsForeignKey = false;
    colvarCreatedOn.IsReadOnly = false;
    colvarCreatedOn.DefaultSetting = @"";
    colvarCreatedOn.ForeignKeyTableName = "";
    schema.Columns.Add(colvarCreatedOn);

    TableSchema.TableColumn colvarCreatedBy = new TableSchema.TableColumn(schema);
    colvarCreatedBy.ColumnName = "createdBy";
    colvarCreatedBy.DataType = DbType.String;
    colvarCreatedBy.MaxLength = 50;
    colvarCreatedBy.AutoIncrement = false;
    colvarCreatedBy.IsNullable = false;
    colvarCreatedBy.IsPrimaryKey = false;
    colvarCreatedBy.IsForeignKey = false;
    colvarCreatedBy.IsReadOnly = false;
    colvarCreatedBy.DefaultSetting = @"";
    colvarCreatedBy.ForeignKeyTableName = "";
    schema.Columns.Add(colvarCreatedBy);

    TableSchema.TableColumn colvarModifiedOn = new TableSchema.TableColumn(schema);
    colvarModifiedOn.ColumnName = "modifiedOn";
    colvarModifiedOn.DataType = DbType.DateTime;
    colvarModifiedOn.MaxLength = 0;
    colvarModifiedOn.AutoIncrement = false;
    colvarModifiedOn.IsNullable = true;
    colvarModifiedOn.IsPrimaryKey = false;
    colvarModifiedOn.IsForeignKey = false;
    colvarModifiedOn.IsReadOnly = false;
    colvarModifiedOn.DefaultSetting = @"";
    colvarModifiedOn.ForeignKeyTableName = "";
    schema.Columns.Add(colvarModifiedOn);

    TableSchema.TableColumn colvarModifiedBy = new TableSchema.TableColumn(schema);
    colvarModifiedBy.ColumnName = "modifiedBy";
    colvarModifiedBy.DataType = DbType.String;
    colvarModifiedBy.MaxLength = 50;
    colvarModifiedBy.AutoIncrement = false;
    colvarModifiedBy.IsNullable = true;
    colvarModifiedBy.IsPrimaryKey = false;
    colvarModifiedBy.IsForeignKey = false;
    colvarModifiedBy.IsReadOnly = false;
    colvarModifiedBy.DefaultSetting = @"";
    colvarModifiedBy.ForeignKeyTableName = "";
    schema.Columns.Add(colvarModifiedBy);

    BaseSchema = schema;
    //add this schema to the provider
    //so we can query it later
    DataService.Providers["kimAppProvider"].AddSchema("alertMessages",schema);
   }
  }
  #endregion

  #region Props

  PK Collections

        #endregion

        #region Deep Save

        #endregion
 }
}

どんな助けやアドバイスも大歓迎です。

Dan

2 Answer


0


実際には、コード生成に使用するコード言語をsubsonicに伝える必要があります。 サブコマンダーを使用する場合、コマンドラインに `/ lang vb`パラメーターを追加できます。 ビルドプロバイダーを使用する場合、私は95%のサブソニックが単独で使用する適切な言語を選択します。 あなたが犯した可能性のある間違いの1つは、ドキュメントhttp://subsonicproject.com/docs/Setting_up_SubSonic_2.xによると、buildproviderセクションがコンパイルタグ内にある必要があるということです。


あなたは自分で1つを作成する必要があります



0


みなさん、こんにちは。ご回答ありがとうございます。しかし、これらすべてを以前に試してみましたが、うまく動作しませんでした。幸いなことに、この問題は修正されました。

これを行うには、独自のクラスvbクラスライブラリを作成し、参照system.web、system.configuration、subsonic.dllおよび関連するdllを追加してから、接続文字列とサービスプロバイダーでアプリ構成を追加し、クラスを生成しました。その後、クラスをdllとして構築しました。

WebサイトのbinフォルダーにDLLを含めたところ、すべてがコンパイルされて正常に動作するようになりました。

しかし、これは今、私は私のダルをkimDal.kimdataとして参照する必要があることを意味しますが、ちょっとそれが動作するので

ありがとうございます

dan