简体   繁体   English

如何使用LINQ TO SQL(ASP.NET)显示sql_variant列中的值?

[英]How to show values from a sql_variant column with LINQ TO SQL (ASP.NET)?

I generate my classes with Linq to Sql, and i have a column " DataValue " which is a sql_variant . 我使用Linq to Sql生成类,并且具有“ DataValue ”列,它是sql_variant

MODEL 模型

[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DataValue", DbType="Variant", UpdateCheck=UpdateCheck.Never)]
        public object DataValue
        {
            get
            {
                return this._DataValue;
            }

CONTROLLER : 控制器:

public ActionResult getDataForAPlc()
        {
            int plc = 1; 
            var dataContext = new PLCDataContext();
            var datas = from tag in dataContext.PLC_Data_5m
                            where tag.TagID == plc && tag.TimeStampLocal >= new DateTime(2016, 7, 20) && tag.TimeStampLocal < new DateTime(2016,7,21)
                           orderby tag.TimeStampLocal descending
                           select tag;
            return View(datas);
        }

And i used the View GENERATOR (Razor) To generate my LIST of Value from my QUERY. 我使用了View GENERATOR (Razor)来从我的QUERY中生成我的值列表。

Problem : I see all values, except Datavalue. 问题:我看到除Datavalue之外的所有值。 There is nothing, and when i generate the view, By default, DataValue does not appear. 什么都没有,并且当我生成视图时,默认情况下,不会出现DataValue。 I added it on my View.cshtml 我在View.cshtml上添加了它

@model IEnumerable<DataReports.Models.PLC_Data_5m>

@{
    ViewBag.Title = "getDataForAPlc";
}

<h2>getDataForAPlc</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.TimeStampLocal)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.DataTimeStamp)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.DataQuality)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.DataValue)
        </th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.TimeStampLocal)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.DataTimeStamp)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.DataQuality)
        </td>
        <td>
           @Html.DisplayFor(modelItem => item.DataValue)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
        </td>
    </tr>
}

And there is no values. 而且没有价值。 Can someone help me? 有人能帮我吗? I know that's an object property due to sql_variant , but, how to get a value from this ? 我知道这是由于sql_variant而导致的对象属性,但是,如何从中获取值呢?

如本文所述,您必须实现一种变通方法以读取sql_variant类型: http : //www.codeproject.com/Articles/137509/Reading-sql-variant-in-Entity-Framework

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

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