【翻訳】Orchard Webショップモジュールを最初から作成する(4)-ProductPartの作成

4292 ワード

原文アドレス:http://skywalkersoftwaredevelopment.net/blog/writing-an-orchard-webshop-module-from-scratch-part-4定義のProductPartこれは、新しいOrchardモジュールを最初から作成するチュートリアルの4編目です.このチュートリアルの概要については、紹介するを参照してください.Orchardのコンテンツ項目(Content Items)はContent Partsで構成されています.私たちのオンラインショップモジュールを使用して、管理者がProductPartを任意のコンテンツタイプ(ContentType)に添付することで、商品(Product)を構成することを望んでいます.たとえば、ユーザーは「本」のコンテンツタイプを定義し、ProductPartを追加すると、「本」を「商品」に変換し、カートや注文書、明細に追加することができます.データベースにデータを格納するためのProductPartを作成します.ProductRecordを作成し、Orchardから継承する必要があります.ContentManagement.Records.ContentPartRecord.Orchardは、仕様として接尾辞「Record」を使用し、NHibernate ORM永続化を使用します.
  • オーチャードを追加する.Frameworkプロジェクトの参照は、Orchard.ContentManagement.Records.ContentPartRecordで継承します.
  • 新しいフォルダの名前を「Models」
  • に追加
  • 「Models」フォルダで、ProductRecordという新しいクラスを作成します.
  • 「Models」フォルダで、新しいクラス名をProductPartとして作成し、ContentPartから継承します.
  • ProductPartには、Price(価格)とSKUのプロパティがあります.

  • ソリューションは次のようになります.
    ProductRecord.cs:
    OrchardがProductRecordオブジェクトのインスタンスをデータベースにマッピング、ロード、保存できるようにする前に、データベース・テーブル構造がどのようになっているかを示す必要があります.私たちはMigrationというクラスを作成し、Orchardから継承します.Data.Migration.DataMigrationImplは、データベース構造(schema)のクラスを定義するためにいくつかのメソッドを呼び出します.Migrationでは、Orchardが作成するテーブルと作成するContenteTypeとContentPartsを教えています.モジュールのディレクトリの下にMigrationsという名前を作成します.csの新しいクラスは、次のコードに入力されます.
    using Orchard.Data.Migration;

    namespace Orchard.Webshop {
    public class Migrations : DataMigrationImpl {

    public int Create() {
    SchemaBuilder.CreateTable("ProductRecord", table => table
    .ContentPartRecord()
    .Column<decimal>("Price")
    .Column<string>("Sku", column => column.WithLength(50))
    );

    return 1;
    }
    }
    }

    「Create」は、Orchardがモジュールを有効にすると呼び出される仕様を使用します.ContentPartRecordメソッドは、ID列を作成し、プライマリ・キーに設定するための簡単な方法です.
    /// <summary>
    /// Defines a primary column as for content parts
    /// </summary>
    public CreateTableCommand ContentPartRecord() {
    Column<int>("Id", column => column.PrimaryKey().NotNull());
    return this;
    }

    私たちの例では、モジュールを有効にしました.しかし、Orchardは頭がいいので、既存のDataMigrationが使用可能であることを検出し、現在保存されているMigrationバージョン番号をチェックします.モジュールが有効になっている間、Migrationが実行できないので、Orchard_Framework_DataMigrationRecordテーブルにも対応するバージョン番号が見つかりません.
    Orchard Adminページをリフレッシュすると、Orchardはいくつかの機能をアップグレードする必要があるという通知を表示します.Orchardをクリックします.Webshopリンクは、直接モジュールページに移動し、Orchardを表示します.Webshop機能:Upgradeをクリックすると、OrchardはMigrationsクラスのCreateメソッドを呼び出し、Orchard_という名前のメソッドを作成します.Webshop_ProductRecordテーブル: