Orchard:在什么表中存储了Blog帖子

问题描述 投票:3回答:3

我正在尝试从较旧的Orchard数据库导出数据,并且在查找存储博客文章内容的表时遇到问题。我已经尝试使用许多不同的“搜索所有列”spoc来搜索所有表和列,但我没有从帖子本身找到文本。

如果我有一篇博文,开头的句子是:这句话包含一个独特的单词。

我本来期望各种“搜索所有列”示例中的至少一个已经出现了一个表/列。但到目前为止,没有人。

谢谢

orchardcms
3个回答
3
投票

Orchard存储数据基于两个表,ContentItemRecordContentItemVersionRecord,存储内容项的元数据,如BlogPost,这些内容项由多个部分构建,每个部分都有它的表,项目与它的部分之间的关​​系基于Id(如果不是draftable)或ContentItemRecord_Id(如果draftable)列

如果我们把BlogPost类型作为例子,它是从TitlePartBodyPartAutoroutePartCommonPart构建的,你想要选择post(id = 90)的所有数据,那么你可以在TitlePartRecord表(ContentItemRecord_Id = 90)中找到它的标题,并且BodyPartRecord表中的正文文本与标题部分记录具有相同的关系,AutorouteRecord表中具有相同关系的路径部分,以及CommonPartRecord中的公共元数据(Id = 90)。

这是从Orchard数据库中提取数据的方法,希望这对您有所帮助。


3
投票

Tnx到@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

这就是权利解决方案


0
投票

为了防止对其他人有用,以下是用于将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
        )
© www.soinside.com 2019 - 2024. All rights reserved.