RavenDB:返回具有空属性值的对象

4

我在ASP.NET MVC中使用Raven,如下所示:

[HttpGet]
public ActionResult Index()
{
    ViewBag.Title = Strings.Workflows;
    ViewBag.AddNewText = Strings.Add_new;

    IEnumerable<WorkflowIndexViewModel> model;
    using (var session = DocumentStore.OpenSession())
    {
        model = session.Query<Workflow>()
            .Select(w => new WorkflowIndexViewModel { WorkflowId = w.Id, WorkflowName = w.Name })
            .ToArray();
    }

    return View(model);
}

奇怪的是,model对象只有一个值(这是我所期望的,因为我知道数据库中有一个Workflow文档),但其上的WorkflowIdWorkfloName属性都为null。为什么会这样?我的投影有问题吗?
我尝试将ToArray()的调用移到Select()之前,那也能正常工作:
[HttpGet]
public ActionResult Index()
{
    ViewBag.Title = Strings.Workflows;
    ViewBag.AddNewText = Strings.Add_new;

    IEnumerable<WorkflowIndexViewModel> model;
    using (var session = DocumentStore.OpenSession())
    {
        model = session.Query<Workflow>()
            .ToArray()
            .Select(w => new WorkflowIndexViewModel { WorkflowId = w.Id, WorkflowName = w.Name });
    }

    return View(model);
}

当您运行查询(未能正常工作的查询)时,原始的HTTP请求是什么样子? - asgerhallas
1个回答

1
如果你将视图模型中的属性名称更改为与工作流类相同,它就会起作用。
model = session.Query<Workflow>()
        .Select(w => new WorkflowIndexViewModel { Id = w.Id, Name = w.Name })
        .ToArray();

但这只是一个解决方法,似乎是一个错误或限制的变通方法。


已在不稳定版本中修复。但是你已经知道了 http://groups.google.com/group/ravendb/browse_thread/thread/10d682d8a12b8e76 ;) - asgerhallas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接