Orchard:博客 post 存储在 table 中
Orchard: In what table is the Blog post stored
我正在尝试从旧的 Orchard 数据库中导出数据,但在查找 table 存储了博客 post 的内容时遇到了问题。我已经尝试使用许多不同的 'Search all columns' spocs 来搜索所有 table 和列,但我没有从 post 本身找到文本。
如果我有一个博客 post 开头的句子是:
这句话包含一个独特的词。
我本以为各种 'Search all columns' 示例中至少有一个会出现 table/column。但到目前为止,none 有。
感谢
Orchard 存储数据基于两个 table,ContentItemRecord
和 ContentItemVersionRecord
,它们存储内容项的元数据,例如 BlogPost
,这些内容项构建自多个部分,每个部分都有它的 table 并且项目与其部分之间的关系基于 Id
(如果不是 draftable)或 ContentItemRecord_Id
(如果 draftable) 列
如果我们以 BlogPost
类型为例,它是从 TitlePart
、BodyPart
、AutoroutePart
和 CommonPart
构建的,而您想要 select post (id = 90) 的所有数据,然后你可以在 TitlePartRecord
table (ContentItemRecord_Id = 90
) 中找到它的标题,并且 body BodyPartRecord
table中的文本与标题部分记录具有相同关系,AutorouteRecord
中的路径部分table具有相同关系,以及[=24中的公共元数据=] (Id = 90).
以上就是从Orchard数据库中提取数据的方法,希望对您有所帮助。
感谢@mdameer...
而 madmeer 的回答的相关查询是这样的:
SELECT * FROM dbo.default_Title_TitlePartRecord
inner join dbo.default_Orchard_Framework_ContentItemRecord on
dbo.default_Title_TitlePartRecord.ContentItemRecord_id=dbo.default_Orchard_Framework_ContentItemRecord.Id
inner join dbo.default_Common_BodyPartRecord on
dbo.default_Common_BodyPartRecord.ContentItemRecord_id=dbo.default_Orchard_Framework_ContentItemRecord.Id
where dbo.default_Title_TitlePartRecord.ContentItemRecord_id=90
这是正确的解决方案
以防万一它可能对其他人有用,以下是用于将 Orchard 实例迁移到 Umbraco 的实际 SQL 查询。它源自 mdameerand 和 Iman Salehi 的优秀答案:
SELECT t.Title, f.Data, b.Text FROM dbo.Title_TitlePartRecord t
inner join dbo.Orchard_Framework_ContentItemRecord f on
t.ContentItemRecord_id=f.Id
inner join dbo.Common_BodyPartRecord b on
b.ContentItemRecord_id=f.Id
AND b.Id = (
SELECT MAX(m2.Id)
FROM dbo.Common_BodyPartRecord m2
WHERE m2.ContentItemRecord_id = f.Id
)
AND t.Id = (
SELECT MAX(m2.Id)
FROM dbo.Title_TitlePartRecord m2
WHERE m2.ContentItemRecord_id = f.Id
)
我正在尝试从旧的 Orchard 数据库中导出数据,但在查找 table 存储了博客 post 的内容时遇到了问题。我已经尝试使用许多不同的 'Search all columns' spocs 来搜索所有 table 和列,但我没有从 post 本身找到文本。
如果我有一个博客 post 开头的句子是: 这句话包含一个独特的词。
我本以为各种 'Search all columns' 示例中至少有一个会出现 table/column。但到目前为止,none 有。
感谢
Orchard 存储数据基于两个 table,ContentItemRecord
和 ContentItemVersionRecord
,它们存储内容项的元数据,例如 BlogPost
,这些内容项构建自多个部分,每个部分都有它的 table 并且项目与其部分之间的关系基于 Id
(如果不是 draftable)或 ContentItemRecord_Id
(如果 draftable) 列
如果我们以 BlogPost
类型为例,它是从 TitlePart
、BodyPart
、AutoroutePart
和 CommonPart
构建的,而您想要 select post (id = 90) 的所有数据,然后你可以在 TitlePartRecord
table (ContentItemRecord_Id = 90
) 中找到它的标题,并且 body BodyPartRecord
table中的文本与标题部分记录具有相同关系,AutorouteRecord
中的路径部分table具有相同关系,以及[=24中的公共元数据=] (Id = 90).
以上就是从Orchard数据库中提取数据的方法,希望对您有所帮助。
感谢@mdameer... 而 madmeer 的回答的相关查询是这样的:
SELECT * FROM dbo.default_Title_TitlePartRecord
inner join dbo.default_Orchard_Framework_ContentItemRecord on
dbo.default_Title_TitlePartRecord.ContentItemRecord_id=dbo.default_Orchard_Framework_ContentItemRecord.Id
inner join dbo.default_Common_BodyPartRecord on
dbo.default_Common_BodyPartRecord.ContentItemRecord_id=dbo.default_Orchard_Framework_ContentItemRecord.Id
where dbo.default_Title_TitlePartRecord.ContentItemRecord_id=90
这是正确的解决方案
以防万一它可能对其他人有用,以下是用于将 Orchard 实例迁移到 Umbraco 的实际 SQL 查询。它源自 mdameerand 和 Iman Salehi 的优秀答案:
SELECT t.Title, f.Data, b.Text FROM dbo.Title_TitlePartRecord t
inner join dbo.Orchard_Framework_ContentItemRecord f on
t.ContentItemRecord_id=f.Id
inner join dbo.Common_BodyPartRecord b on
b.ContentItemRecord_id=f.Id
AND b.Id = (
SELECT MAX(m2.Id)
FROM dbo.Common_BodyPartRecord m2
WHERE m2.ContentItemRecord_id = f.Id
)
AND t.Id = (
SELECT MAX(m2.Id)
FROM dbo.Title_TitlePartRecord m2
WHERE m2.ContentItemRecord_id = f.Id
)