我看到了一个相关的问题: 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
映射。
它看起来不像语言问题,如最初提供的链接中所述。而且我已经很久没有挣扎了,但没有运气......
谢谢!
答案 0 :(得分:4)
我刚刚注意到您正在使用Sitecore DB的主数据库和Glass的SitecoreContext
。
SitecoreContext
类将使用运行时由Sitecore.Context.Database
属性定义的数据库。这可能意味着它正在使用Web数据库。
您是否可以检查是否已将项目发布到网络数据库,或使用:
var context = new SitecoreService("master");