我下面貝特朗·勒羅伊的指導OrchardCMS遷移到文件存儲(1.x的預分支版本)果園CMS 1.x的[文件存儲] - 混合記錄有力地與紀錄的水平低性能
以下是我的示例代碼中的一些摘錄,試圖在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; }
}
ContentPart
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 ]
,如果我在DB添加手機& email列這工作完全正常,當翼錯誤。但是然後它將數據寫入2個地方。在xml中它只會插入電話和電子郵件字段。並在表格中插入整個記錄。
我知道如果我使用到位this.Retrieve(的檢索()),那麼它就會存儲在這兩個地方,等等等等整個記錄...
但是我感興趣的只有只是一些領域在XML信息集中以及僅在記錄表中的一些字段中。我在這裏做錯了什麼?
沒有捷徑方法來做到這一點? – Yashvit
不需要。如果您需要,可以創建一個,它只是擴展方法。 –
不是這樣的this.Retrieve()。我知道如何訪問記錄較少的屬性。我如何訪問僅在記錄中的屬性? – Yashvit