1

Orchard CMS のモジュールを作成しています。

いくつかのテーブルがあります。Migrations.cs で:

それはうまくいきます:

            SchemaBuilder.CreateTable("CustomerPartRecord", table => table
            .ContentPartRecord()
            .Column<string>("FirstName", c => c.WithLength(50))
            .Column<string>("LastName", c => c.WithLength(50))
            .Column<string>("Title", c => c.WithLength(10))
            .Column<DateTime>("CreatedUtc")
            );

        ContentDefinitionManager.AlterPartDefinition("CustomerPart", part => part
            .Attachable(false)
            );

        ContentDefinitionManager.AlterTypeDefinition("Customer", type => type
            .WithPart("CustomerPart")
            .WithPart("UserPart")
            );
        return 6;

しかし、うまくいきません:

            SchemaBuilder.CreateTable("OrderPartRecord", t => t
            .ContentPartRecord()
            .Column<int>("CustomerId", c => c.NotNull())
            .Column<DateTime>("CreatedAt", c => c.NotNull())
            .Column<decimal>("SubTotal", c => c.NotNull())
            .Column<string>("Status", c => c.WithLength(50).NotNull())
            );

        ContentDefinitionManager.AlterPartDefinition("OrderPart", part => part
             .Attachable(false)
        );

        ContentDefinitionManager.AlterTypeDefinition("Order", type => type
            .WithPart("OrderPart")
        );

注文を追加しようとするとエラーが発生します。エラー: null の 1 対 1 のプロパティから ID を割り当てようとしました: ContentItemRecord何が問題なのですか?

更新:

ハンドラ:

public class OrderPartHandler : ContentHandler
{
    public OrderPartHandler(IRepository<OrderPartRecord> repository)
    {
        Filters.Add(StorageFilter.For(repository));
    }
}

そして注文を作成します:

_orderRepository.Create(order);
4

3 に答える 3

6

部品レコードのレコードを自分で作成しないでください。コンテンツ アイテムなしで作成することを意図している場合は、コンテンツ パーツ レコードではなく、通常のレコードにします。コンテンツ パーツ レコードは、常にコンテンツ アイテムに関連付ける必要があり、リポジトリから直接ではなく、コンテンツ マネージャーを介して作成する必要があります。

于 2012-10-07T18:31:59.030 に答える
2

ご想像のとおり、リポジトリを使用して Order を作成しようとしていますが、十分に注意しないとエラーが発生します。この問題を解決するには、Order が実際にはコンテンツ アイテムであるため、ContentManager を使用して注文を作成します。

PS:/ このエラーは nHibernate に関連しており、特にエンティティ間の関連付けに関するものです。詳細については、このリンクを参照してください: Hibernate : 1 対 1 の null プロパティから ID を割り当てようとしました: 従業員

于 2012-10-07T18:30:52.600 に答える