3

我看到了一个相关的问题: Sitecore Glass Mapper always null

但不幸的是,它并没有为我的情况提供解决方案。

这是一个代码片段:

var db = Factory.GetDatabase("master");
var context = new SitecoreContext();
// the ID of Needed item
var g = new Guid("{F21C04FE-8826-41AB-9F3C-F7BDF5B35C76}");
// just to test if it's possible to fetch item using db.GetItem
var i = db.GetItem(new ID(g), Language.Current, Sitecore.Data.Version.Latest);
// Grab item
var t = context.GetItem<Article>(g);

在上面的代码中: i is not null t is null

文章是简单的类,如:

[SitecoreType(TemplateId = "{4C4EC1DA-EB77-4001-A7F9-E4C2F61A9BE9}")]
public class Article
{
    [SitecoreField(FieldName = "Title")]
    public string Title { get; set; }
}

Sitecore 中只安装了一种语言 - en,它也已在 web.config 的项目中指定。

此外,我还添加GlassMapperSc.Start();了我Application_StartGlobal.asax.cs程序集并将我的程序集添加到包含程序集的列表中,并且我成功地在映射var attributes = new AttributeConfigurationLoader(new[] { "Assembly.Name" });中找到了我的类。SitecoreContext

正如一开始提供的链接中所述,它看起来不像是语言问题。而且我已经为此苦苦挣扎了很长时间,但是没有运气...

谢谢你!

4

1 回答 1

4

我刚刚注意到您将 master db 用于 Sitecore DB 和 SitecoreContextGlass。

该类SitecoreContext将使用该Sitecore.Context.Database属性在运行时定义的数据库。这可能意味着它正在使用 Web 数据库。

您是否可以检查您是否已将项目发布到 Web 数据库,或者改为使用:

var context = new SitecoreService("master");
于 2014-07-02T22:46:09.093 回答