Временные ряды возврата в MVC Linq Query - PullRequest
0 голосов
/ 16 февраля 2019

Только начинается в C # с фона Wolfram Language.Попытка создать веб-сайт, который отображает собранную телеметрию от погодных (и других) датчиков.Я хочу иметь возможность передавать данные из базы данных SQL Server, которая содержит типы данных datetime2 и double, в представление в формате JSON.Возникли проблемы при создании коллекции, включая формат DateTime.

Модель (DLWeatherMain)

using System.ComponentModel.DataAnnotations;

namespace WeatherViewer.Models
{
    public partial class DlMainWeather
    {
        [DataType(DataType.DateTime)]
        [Required]
        public DateTime TmStamp { get; set; }
        public double? AirTempAvg { get; set; }
    }
 }

(TelemetryDataContext)

    using System;
    using Microsoft.EntityFrameworkCore;

    namespace WeatherViewer.Models
    {
        public partial class TelemetryDataContext : DbContext
        {
            public TelemetryDataContext()
            {
            }

            public TelemetryDataContext(DbContextOptions<TelemetryDataContext> options)
                : base(options)
            {
            }

            public virtual DbSet<DlMainWeather> DlMainWeather { get; set; }

            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
                if (!optionsBuilder.IsConfigured)
                {
                    optionsBuilder.UseSqlServer("connectionstring");
                }
            }

            protected override void OnModelCreating(ModelBuilder modelBuilder)
            {
                modelBuilder.HasAnnotation("ProductVersion", "2.2.2-servicing-10034");


                modelBuilder.Entity<DlMainWeather>(entity =>
                {
                    entity.HasKey(e => new { e.TmStamp,})
                        .HasName("PK__DL_MAIN___B3E4C26B9637DE80");

                    entity.ToTable("DL_MAIN_Weather");

                    entity.Property(e => e.AirTempAvg).HasColumnName("AirTemp_Avg");

                });

            }
        }
    }

(WeatherDataAccessLayer)

using System;
using System.Collections.Generic;
using System.Linq;


namespace WeatherViewer.Models
{
    public class WeatherDataAccessLayer
    {
        TelemetryDataContext db = new TelemetryDataContext();
        public IEnumerable<DlMainWeather> GetTemperatures(double backtime)
        {
            IEnumerable<DlMainWeather> temparray = db.DlMainWeather
                            .Where(dt => dt.TmStamp.Date > DateTime.Now.AddHours(-backtime))
                            .Select(dt => new { dt.TmStamp.Date, dt.AirTempAvg });
            return temparray;
        }
    }
}

Контроллер

using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Mvc;
using WeatherViewer.Models;

namespace WeatherViewer.Controllers
{

    public class WeatherController : Controller
    {
        WeatherDataAccessLayer weatherobj = new WeatherDataAccessLayer();

        public IActionResult Index()
        {
            return View();
        }

        public ActionResult TemperatureSummary()
        {
            return PartialView("_TemperatureReport");
        }

        public JsonResult TemperatureReturn()
        {
            List<DlMainWeather> temparray = new List<DlMainWeather>();
            temparray = weatherobj.GetTemperatures(12).ToList();
            return new JsonResult(temparray);
        }
    }
}

Итак, моя проблема заключаетсяс DataAccessLayer.Как передает temparray от DAL, выдает ошибки при конвертации в IEnumerable.Каков наилучший способ передачи временных рядов (или смешанных массивов типов данных в целом) из Entity Framework в представление в виде JSON?

Также: TmStamp можно преобразовать во время Unix, если это облегчает проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...