gpt4 book ai didi

c# - RavenDB:返回属性为空值的对象

转载 作者:行者123 更新时间:2023-11-30 12:50:56 25 4
gpt4 key购买 nike

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

最佳答案

如果您将 View 模型中的属性名称更改为与 Workflow 类相同的名称,它将起作用。

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

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

关于c# - RavenDB:返回属性为空值的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8053395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com