加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – 如何打印未映射的值

发布时间:2020-12-16 09:37:49 所属栏目:asp.Net 来源:网络整理
导读:我使用复杂的SQL查询,我必须以简单的方式使用SqlQuery … 模型: public class C{ public int ID { get; set; } [NotMapped] public float Value { get; set; }} 控制器: IEnumerableC results = db.C.SqlQuery(@"SELECT ID,ATAN(-45.01) as Value from C);
我使用复杂的SQL查询,我必须以简单的方式使用SqlQuery …

模型:

public class C
{
    public int ID { get; set; }
    [NotMapped]
    public float Value { get; set; }
}

控制器:

IEnumerable<C> results = db.C.SqlQuery(@"SELECT ID,ATAN(-45.01) as Value from C);
return View(results.ToList());

视图:

@model IEnumerable<C>
@foreach (var item in Model) {
    @Html.DisplayFor(modelItem => item.Value)
}

item.Value的结果为NULL.

所以我的问题是,如何从SQL查询中打印计算值?

谢谢你的帮助.

解决方法

我的结论是,值为0,EF不会将返回的列映射到未在模型中映射的属性.

您可以尝试作为替代方案来定义帮助程序类型…

public class CHelper
{
    public int ID { get; set; }
    public float Value { get; set; }
}

然后查询此类型并在之后将值复制到您的实体:

IEnumerable<C> results = db.Database.SqlQuery<CHelper>(
    @"SELECT ID,ATAN(-45.01) as Value from C")
    .Select(ch => new C
    {
        ID = ch.ID,Value = ch.Value
    });

(通常在LINQ-to-Entities查询中,您无法使用Select投影到实体.但我相信上面示例中的Select不会影响数据库查询,并且是内存中的LINQ-to-Objects,因此应该允许但我不确定.)

请注意,结果集合不会附加到上下文并由上下文跟踪,但我想您无论如何都不需要它来呈现视图的GET请求.

当然,您可以直接基于CHelper类创建视图作为视图模型,并省略转换为C实体.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读