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")
        );

尝试添加订单时出现错误。错误:试图从空的一对一属性分配 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

正如我所猜测的,您正在尝试使用存储库创建一个订单,如果您没有采取足够的措施,则会导致错误。要解决此问题,请使用 ContentManager 创建订单,因为 Order 实际上是一个内容项。

PS:/这个错误和nHibernate有关,特别是关于entites之间的关联。阅读此链接以获取更多信息:休眠:尝试从空的一对一属性分配 id:员工

于 2012-10-07T18:30:52.600 回答
0

实际上,您可以通过将缺少的参数分配给您的零件记录来解决此问题,它只需要填写订单。ContentPartRecord = your_content_item.Record;

于 2018-08-11T23:18:43.793 回答