Свяжите динамические поля в `CSHTML`, используя` Entity Framework` - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть 2 поля в Table.И согласно запросу Stored Procedure's, это дает 4 поля.В этом, 2 поля из Table и 2 других динамических поля, которые я не могу отобразить в Entity Framework напрямую.Итак, как мне связать эти 2 поля в CSHTML.

Ниже приведен код, который я пробовал.

Запрос хранимой процедуры

SELECT                          
    ROW_NUMBER() Over (Order By Table.Id) SrNo
    ,Id
    ,Name
    ,'10000' Salary
FROM Table

Контроллер

MyModel model = new MyModel();
SqlParameter param1 = new SqlParameter("@Parameter",1);
model.lstdata = app.Database.SqlQuery<EntityName>("exec ProcedureName @Parameter", param1).ToList();
return View(model);

Класс модели

public class Model
{
    public int Id { get; set; }        
    public string Name { get; set; }
    public List<EntityName> lstData { get; set; }
    public Model()
    {
        lstData = new List<EntityName>();
    }
}

CSHTML

@foreach (var item in Model.lstdata)
{
    <tr>     
        <td>
            @Html.DisplayFor(modelItem => item.SrNo)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Id)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Salary)
        </td>
    </tr>
}

EntityName

namespace Data
{
    [Table("Table")]
    public class EntityName
    {
        [Key]
        public long Id { get; set; }
        public string name { get; set; }

        [NotMapped]
        public int SrNo { get; set; }
    }
}

Пожалуйста, предложите мне лучший вариант для ответа на этот запрос.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Чтобы связать значения в представлении, я бы предложил создать отдельный ViewModelEntity и для работы с базой данных использовать класс Pure POCO, который имеет те же поля, что и в вашей таблице.

0 голосов
/ 25 апреля 2018

Попробуйте код ниже.Попробуйте добавить атрибут [NotMapped] в свойство, которое вы не хотите отображать.

public class EntityName
{
    // ...

    [NotMapped]
    public int SrNo { get; set; }
    [NotMapped]
    public int Salary{ get; set; }

    // ...
}
...