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,ContentItemRecordContentItemVersionRecord,它们存储内容项的元数据,例如 BlogPost,这些内容项构建自多个部分,每个部分都有它的 table 并且项目与其部分之间的关​​系基于 Id(如果不是 draftable)或 ContentItemRecord_Id(如果 draftable) 列

如果我们以 BlogPost 类型为例,它是从 TitlePartBodyPartAutoroutePartCommonPart 构建的,而您想要 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
        )