简体   繁体   English

使用实体框架在CSHTML中绑定动态字段

[英]Bind dynamic fields in `CSHTML` using `Entity Framework`

I have 2 fields in Table . 我在Table有2个字段。 And as per Stored Procedure's query, it gives 4 fields. 根据Stored Procedure's查询,它给出4个字段。 In that, 2 fields are from Table and other 2 dynamic fields which I can't mapped in Entity Framework directly. 其中,有2个字段来自Table和其他2个动态字段,我无法直接在Entity Framework映射。 So how can I bind that 2 fields in CSHTML . 因此,如何在CSHTML绑定这两个字段。

Following is the code I have tried. 以下是我尝试过的代码。

Stored Procedure's Query 存储过程的查询

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

Controller 控制者

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

Model Class 型号类别

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 网页HTML

@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; }
    }
}

Please suggest me a best option to come out from this query. 请建议我从此查询中找出一个最佳选择。

Try below code. 尝试下面的代码。 Try adding [NotMapped] attribute on the property you don't want to map. 尝试在您不想映射的属性上添加[NotMapped]属性。

public class EntityName
{
    // ...

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

    // ...
}

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM