Sitefinity数据库中的内容存储在哪里?

Dan*_*iel 1 sitefinity sitefinity-5

经过几个小时的难以分析的分析,我已经成功地将1,000个新闻项目和其他内容从Sitefinity 5迁移到Wordpress,并且还有一些猜测,但还有一些项目仍然遗留下来.特别是页面.我知道很多内容都以非常模糊的方式存储,但必须有人之前已经做过这样的事情,并且可以引导我朝着正确的方向前进.

我的研究(以及对数据库的文本搜索)已经找到了页面标题等,但是当我搜索内容时,我什么也得不到.我的直觉告诉我内容是以二进制形式存储的,任何人都可以确认是否是这种情况?

只有在Visual Studio中设置了站点的.net开发人员(据我所见),Sitefinity文档才有用.

Dan*_*iel 12

这可能是我遇到的最容易混淆的存储内容的方式.在对数据库执行文本搜索之后,我终于找到了存储内容的位置,但这并不是一个简单的过程.

Pages的主记录似乎是sf_page_node,有相关的表:

  • sf_object_data(page_id与sf_page_node.content_id相关)
  • sf_draft_pages(page_id与sf_page_node.content_id相关)
  • sf_page_data(content_id与sf_page_node.content_id相关)
  • sf_control_properties(control_id与sf_object_data.id相关)

所以你可以通过这样的查询得到你需要的信息:

select * from 
[sf_page_node]
join sf_object_data on sf_page_node.content_id = sf_object_data.page_id
join sf_control_properties on sf_object_data.id = sf_control_properties.control_id
Run Code Online (Sandbox Code Playgroud)

其他需要考虑的事项:

  • parent_id字段与sf_page_node表相关,因此如果您正在编写脚本,请务必同时查询
  • 页面可能有横幅图像,您将"place_holder"值选为"BannerHolder",标题为"Image"图像可以存储为sf_media_content中的blob,您应该单独处理.'ImageId'的"nme"值将在"val"列中具有GUID.您可以使用此值查询sf_media_content作为"content_id",实际二进制数据存储在sf_chunks中,它们与"file_id"相关

我修改后的查询考虑了迁移内容所需的内容如下:

select 
    original.content_id,
    original.url_name_,
    original.title_,
    parent.id,
    parent.url_name_,
    parent.title_,
    place_holder,
    sf_object_data.caption_,
    sf_control_properties.nme,
    val
from [sf_page_node] original
join sf_object_data on original.content_id = sf_object_data.page_id
join sf_control_properties on sf_object_data.id = sf_control_properties.control_id
join sf_page_node parent on original.parent_id = parent.id
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮助别人!