RavenDB: возвращение объектов с нулевыми значениями для свойств - PullRequest
4 голосов
/ 08 ноября 2011

Я использую Raven в ASP.NET MVC следующим образом:

[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 документ в моей базе данных), но оба свойства 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);
}

1 Ответ

1 голос
/ 09 ноября 2011

Если вы измените имена своих свойств в модели представления на те же, что и в классе Workflow, они будут работать.

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

Но это всего лишь обходной путь, который кажется ошибкой илиограничение.

...