首页 > 解决方案 > 使用 `Entity Framework` 绑定`CSHTML` 中的动态字段

问题描述

我有 2 个字段Table。根据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#.netsql-serverasp.net-mvc-4

解决方案


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

public class EntityName
{
    // ...

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

    // ...
}

推荐阅读