gpt4 book ai didi

asp.net - Orchard CMS 1.x [文档存储] - 混合记录支持和记录较少的属性

转载 作者:行者123 更新时间:2023-12-01 02:20:01 25 4
gpt4 key购买 nike

我正在按照 Bertrand Le Roy 的指南将 OrchardCMS 迁移到文档存储(1.x 分支预发布)

http://weblogs.asp.net/bleroy/archive/2013/11/04/the-shift-how-orchard-painlessly-shifted-to-document-storage-and-how-it-ll-affect-you.aspx

以下是我的示例代码中的一些摘录,试图在 ContentPart 中混合记录支持和无记录属性。

迁移

public int Create() {
SchemaBuilder.CreateTable("CustomerPartRecord",
table => table
.ContentPartRecord()
.Column<string>("Name")
);

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

ContentDefinitionManager.AlterTypeDefinition("Customer",
type => type
.WithPart("CommonPart")
.WithPart("Title")
.WithPart("CustomerPart")
.Creatable());
return 1;
}

ContentPartRecord
public class CustomerPartRecord : ContentPartRecord {
public virtual string Name { get; set; }
public virtual string Phone { get; set; }
public virtual string Email { get; set; }
}

内容部分
public class CustomerPart : ContentPart<CustomerPartRecord>
{
public string Name
{
get { return Record.Name; } // tried "return Retrieve(x=>x.Name);"
set { Record.Name = value; } // tried "return Store(x=>x.Name, value);"
}
public string Phone
{
get { return this.Retrieve(x => x.Phone); } //Recordless property
set { this.Store(x => x.Phone, value); }
}
public string Email
{
get { return this.Retrieve(x => x.Email); } //Recordless property
set { this.Store(x => x.Email, value); }
}
}

尝试添加新记录时抛出以下错误
could not insert: [Customers.Models.CustomerPartRecord#28][SQL: INSERT INTO Teknorix_Customers_CustomerPartRecord (Name, Phone, Email, Id) VALUES (?, ?, ?, ?)] ---> System.Data.SqlServerCe.SqlCeException: The column name is not valid. [ Node name (if any) = ,Column name = Phone ]

如果我在数据库中添加电话和电子邮件列,这绝对可以正常工作。但随后它将数据写入 2 个地方。在 xml 中,它只会插入电话和电子邮件字段。并在表中插入整个记录。

我知道如果我使用 Retrieve() 代替 this.Retrieve() 那么它将在两个地方存储整个记录,等等......

但我只对 XML 信息集中的某些字段和记录表中的某些字段感兴趣。我在这里做错了什么?

最佳答案

如果您的部件有记录,您仍然可以仅在信息集中定位属性,而无需存在记录属性。为此,请使用 this.As<InfosetPart>() 获取信息集.然后,使用来自 InfosetHelper 的扩展方法,例如 infosetPart.Retrieve<string>("Phone")infosetPart.Store<string>("Phone", value) .

关于asp.net - Orchard CMS 1.x [文档存储] - 混合记录支持和记录较少的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21203390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com