Нулевой объект возвращает System.Data.Entity.DynamicProxies в представлении Razor. - PullRequest
0 голосов
/ 27 марта 2019

Мой проект использует EntityFramework 6.2, я не понимаю, почему, когда я использую обнуляемый оператор ? в представлении Razor, он возвращает System.Data.Entity.DynamicProxies.MachineHW_06E2...9BE0?.CpuName вместо строкового значения

Таким образом, это не работает:

@model MYApp.Models.MachineVM

...

<div class="flex-row">
    <em>CPU: </em> @Model.Machine.MachineHW?.CpuName
</div>   

Вместо этого, используя этот менее читаемый код, он работает:

<em>CPU: </em>@if (Model.Machine.MachineHW != null){@Model.Machine.MachineHW.CpuName}

или

<em>CPU: </em>@(Model.Machine.MachineHW == null ? "" : Model.Machine.MachineHW.CpuName)  

это работает.


Модель (Machine.cs):

public class Machine
{
    [Key]
    public int Id { get; set; }

    public string Name { get; set; }


    public virtual MachineHW MachineHW { get; set; }
}

Модель (MachineHW.cs):

public class WorkloadMachineHW
{

    [ForeignKey("Machine"), Key]
    public int MachineId { get; set; }

    public string CpuName { get; set; }

    public virtual Machine Machine { get; set; }

}

ViewModel (MachineVM)

public class MachineVM
{
    public Machine Machine { get; set; }

    public bool someParam{ get; set; }

}

Контроллер

public ActionResult doMachine()
{

    List<Machine> machinesList = db.Machine.Include(m => m.MachineHW).Where(some filter...).ToList();

    MachineVM model = new MachineVM ();
    model.Machine = machinesList.firstOrDefault();
    model.someParam =  true;

    return View(model);
}

Почему обнуляемый оператор возвращает DynamicProxies, вместо этого проверяя, является ли объект нулевым, и затем отображает значение, которое он работает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...