使用`Entity Framework`在`CSHTML`中绑定动态字段

问题描述 投票:0回答:2

我在Table有2个领域。根据Stored Procedure's查询,它给出了4个字段。在那里,2个字段来自Table和其他2个动态字段,我无法直接在Entity Framework中映射。那么如何在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>
}

实体名称

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

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

请建议我从这个查询出来的最佳选择。

c# .net sql-server asp.net-mvc-4
2个回答
0
投票

试试下面的代码。尝试在您不想映射的属性上添加[NotMapped]属性。

public class EntityName
{
    // ...

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

    // ...
}

0
投票

要在视图中绑定值,我建议创建单独的ViewModelEntity,并为数据库操作使用Pure POCO类,它具有与表中相同的字段。

© www.soinside.com 2019 - 2024. All rights reserved.