微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – RavenDB:返回属性为null值的对象

我在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);
}

奇怪的是模型对象有一个值(正如我所料,因为我知道我的数据库中有一个Workflow文档),但它上面的WorkflowId和WorkfloName属性都是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);
}

解决方法

如果将视图模型中属性名称更改为与Workflow类相同,则它将起作用.

model = session.Query<Workflow>()
        .Select(w => new WorkflowIndexviewmodel { Id = w.Id,Name = w.Name })
        .ToArray();

但这只是一个似乎是一个错误或限制的解决方法.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐