Sitecore Glass映射器GetItem <typename>(guid)始终返回null </typename>

时间:2014-07-02 00:21:39

标签: orm sitecore code-generation glass-mapper tds

我看到了一个相关的问题: 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);

在上面的代码中:  我不是空的  t为空

文章是简单的类:

[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_Start添加到Global.asax.cs,并通过var attributes = new AttributeConfigurationLoader(new[] { "Assembly.Name" });将我的程序集添加到包含的程序集列表中,并且我成功地在SitecoreContext映射。

它看起来不像语言问题,如最初提供的链接中所述。而且我已经很久没有挣扎了,但没有运气......

谢谢!

1 个答案:

答案 0 :(得分:4)

我刚刚注意到您正在使用Sitecore DB的主数据库和Glass的SitecoreContext

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

您是否可以检查是否已将项目发布到网络数据库,或使用:

var context = new SitecoreService("master");