gpt4 book ai didi

database - 通过 Sitecore API 获取数据库的问题

转载 作者:太空狗 更新时间:2023-10-30 02:00:48 26 4
gpt4 key购买 nike

我们注意到 Sitecore API 代码中有一点奇怪。下面的代码供您引用。该代码试图通过执行 new Database(database) 获取数据库。但随机它失败了。

此代码在 Database db = new Database(database); 上运行了一段时间,但昨天开始随机失败。当我们将代码更改为 Database db = Database.GetDatabase(database); 时,代码又开始工作了。这两种方法有什么区别,Sitecore 推荐什么?

我已经看到这种情况发生了两次 - 多次在生产环境中,几次在我的开发环境中。

public static void DeleteItem(string id, stringdatabase)
{
//get the database
Database db = new Database(database);
//get the item
item = db.GetItem(new ID(id));
if (item != null)
{
using(new Sitecore.SecurityModel.SecurityDisabler())|
{
//delete the item
item.Delete();
}
}
}

最佳答案

人们获得特定数据库的常见方式是:

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");

这等同于 Sitecore.Data.Database.GetDatabase("master")

当您调用这些方法中的任何一个时,它会首先检查数据库的缓存。如果找不到,它将通过反射使用配置文件中的所有配置值构建数据库。创建数据库后,它将被放入缓存中以备将来使用。

当您在数据库上使用构造函数时,它只是创建一个相当空的数据库对象。当您使用此方法时,我很惊讶地听到它完全有效。

获取特定数据库的正确方法是使用:

Sitecore.Configuration.Factory.GetDatabase("master");
// or
Sitecore.Data.Database.GetDatabase("master");

如果您希望获取用于当前请求的数据库(又名上下文数据库),您可以使用 Sitecore.Context.Database。您还可以使用 Sitecore.Context.ContentDatabase

关于database - 通过 Sitecore API 获取数据库的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11140962/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com