Gab*_*bar 3 database api sitecore
我们注意到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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
您将看到人们获得特定数据库的常见方法是:
Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
Run Code Online (Sandbox Code Playgroud)
这相当于Sitecore.Data.Database.GetDatabase("master").
当您调用这些方法中的任何一个时,它将首先检查数据库的缓存.如果没有找到,它将通过反射在配置文件中使用所有配置值构建数据库.创建数据库后,它将被放置在缓存中以供将来使用.
当您在数据库上使用构造函数时,它只是创建一个相当空的数据库对象.当你使用这种方法时,听到它正在发挥作用,我感到很惊讶.
获取特定数据库的正确方法是使用:
Sitecore.Configuration.Factory.GetDatabase("master");
// or
Sitecore.Data.Database.GetDatabase("master");
Run Code Online (Sandbox Code Playgroud)
如果您希望将数据库与当前请求(也称为上下文数据库)一起使用,则可以使用Sitecore.Context.Database.你也可以使用Sitecore.Context.ContentDatabase.
| 归档时间: |
|
| 查看次数: |
2575 次 |
| 最近记录: |