簡體   English   中英

如何將數據庫邏輯從我的 Asp.Net MVC 應用程序轉移到 ASP.Net Core MVC?

[英]How can I transfer the database logic from my Asp.Net MVC Apllication to ASP.Net Core MVC?

如何將此控制器的數據庫邏輯從 Asp.Net MVC 轉移到 ASP.Net Core MVC? 我嘗試應用幾個教程,但我無法將我的邏輯與其中任何一個一起使用。 應用程序應注冊用戶輸入並在 [HttpPost] 中對其進行評估,並在 10 輪后清空數據庫。

這就是我的控制器的樣子:

using Microsoft.AspNetCore.Mvc;
using MyApplication.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using DevExpress.AspNetCore;

namespace MyApplication.Controllers
{
    public class MyController : Controller
    {
       public IActionResult MyApplicationView()
        {
            ClearDataBase();

            Model model = new Model();
            int index = 0;
            model.Image= GetImage(out index);
            model.Round = 1;
            model.Direction = 0;
            model.Fast = 0;
            model.Slow = 0;
            model.Good = 0;

            return View("MyApplicationView", model);
        }

        private string GetImage(out int index)
        {
            Random random = new Random();
            var list = new List<string> { "0", "10", "20", "30", "40", "50", "60", "70", "80", "90", "100", "110", "120", "130", "140", "150", "160", "170", "180", "190", "200" };
            index = random.Next(1, list.Count);

            string image = "~/Images/" + list[index] + ".jpg";

            int intindex = Convert.ToInt32(list[index]);

            using (DatabaseContext dbContext = new DatabaseContext())
            {
                MyApplicationData _mad = null;
                bool newDBtable = false;
                try
                {
                    myApplicationData = dbContext.MyApplicationData.FirstOrDefault();
                }
                catch (Exception ex)
                {
                }
                if (_mad == null)
                {
                    newDBtable = true;
                    _mad = new MyApplicationData(1);
                    _mad.Rounds = 1;
                    _mad.TooSlow = 0;
                    _mad.TooFast = 0;
                    _mad.GoodDrive = 0;

                }
                else
                {
                    newDBtable = false;
                }
                _agd.ImageIndex = intindex;

                try
                {
                    if (newDBtable = true)
                    {
                        dbContext.MyApplicationData.Add(_mad);
                    }
                    else
                    {
                        dbKontext.MyApplicationData.Attach(_mad);
                        dbKontext.Entry(_mad).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
                    }

                    int numberOfChanges = dbContext.SaveChanges();
                }
                catch (Exception ex)
                {
                }
            }

            return image;

        }
        [HttpPost]
        public IActionResult TimerCompleted(Model model)
        {
            MyApplicationData _mad = null;
            bool newDBtable = false;
            using (DatabaseContext dbKontext = new DatabaseContext())
            {
                try
                {
                    myApplicationData = dbContext.MyApplicationData.FirstOrDefault();
                }
                catch (Exception ex)
                {
                }

                if (_mad == null)
                {
                    _mad = new MyApplicationData(1);
                    _mad.Rounds = 1;
                    newDBtable = true;
                    _mad.TooSlow = 0;
                    _mad.TooFast = 0;
                    _mad.GoodDrive = 0;
                }


                if (_mad.ImageIndex < model.Direction)
                {
                    model.Slow = _mad.TooSlow;
                    model.Fast = ++_mad.TooFast;
                    model.Good = _mad.GoodDrive;
                }
                else if (_mad.ImageIndex > model.Direction)
                {
                    model.Slow = ++_mad.TooSlow;
                    model.Fast = _mad.TooFast;
                    model.Good = _mad.GoodDrive;
                }
                else if (_mad.ImageIndex == model.Direction)
                {
                    model.Slow = _mad.TooSlow;
                    model.Fast = _mad.TooFast;
                    model.Good = ++_mad.GoodDrive;
                }
                else
                {
                    model.Slow = _mad.TooSlow;
                    model.Fast = ++_mad.TooFast;
                    model.Good = _mad.GoodDrive;
                }

                if (_mad.Rounds <= 10)
                {
                    _mad.Rounds = _mad.Rounds + 1;
                    model.Round = _mad.Rounds ;
                }
                else
                {
                    model.Round = _mad.Rounds ;
                }

                try
                {
                    if (newDBtable == true)
                    {
                        dbContext.MyApplicationData .Add(_mad);
                    }
                    else
                    {
                        dbKontext.MyApplicationData.Attach(_mad);
                        dbKontext.Entry(_mad).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
                    }

                    int numberOfChanges = dbContext.SaveChanges();
                }
                catch (Exception ex)
                {
                }

            }

            int index;
            model.Image = Url.Content(GetImage(out index));

            return Json(model);
        }

        public void EmpyDatabase()
        {
            using (DatabaseContext dbContext = new DatabaseContext ())
            {
                try
                {
                    List<MyApplicationData> _mad= dbContext.MyApplicationData.Select(a => a).ToList();
                    foreach (MyApplicationData mad in _mad)
                    {
                        dbContext.AutoGaugeDaten.Attach(mad);
                        dbContext.Entry(mad).State = Microsoft.EntityFrameworkCore.EntityState.Deleted;
                    }

                    int numberOfChanges = dbContext.SaveChanges();
                }
                catch (Exception ex)
                {
                }
            }
        }
    }
}

那是我的 DbContext

using Microsoft.EntityFrameworkCore;

namespace MyApplication.Models
{
    public class DatabaseContext : DbContext
    {
        public virtual DbSet<MyApplicationData> MyApplicationData { get; set; }
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer(
                @"Server=(localdb)\mssqllocaldb;Database=MyApplicationDatabaseCore;Integrated Security=True");
        }
    }
}

這是我的數據庫:

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace MyApplication.Models
{
    [Table("MyApplicationData")]
    public partial class MyApplicationData
    {
        protected MyApplicationData()
        {

        }

        public MyApplicationData(int MyApplicationDataID)
        {
            this.MyApplicationDataID= MyApplicationDataID;
        }

        [Key]
        public int MyApplicationDataID{ get; set; }
        public int Rounds{ get; set; }
        public int TooFast{ get; set; }
        public int TooSlow{ get; set; }
        public int ImageIndex { get; set; }
        public int GoodDrive{ get; set; }
    }
}

還有我的模型:

namespace MyApplication.Models
{
    public class GaugeModel
    {
        public string Image{ get; set; }
        public int Fast{ get; set; }
        public int Slow{ get; set; }
        public int Direction{ get; set; }
        public int Round{ get; set; }
        public int Good{ get; set; }
    }
}

您得到的錯誤是它無法將一種類型的類轉換為另一種類型。 錯誤是在這條線上拋出的嗎?

List<MyApplicationData> _mad= dbContext.MyApplicationData.Select(a => a).ToList();

這是因為您有兩個名為 MyApplicationData 的類。 一個在 MyApplication.Models 的命名空間中,一個在 MyApplication 的命名空間中。 該應用程序有兩個可供選擇,它正在抓取您不想要的一個。 您必須通過將您的線路更改為此來強制它使用您想要的。

List<MyApplicationData.Models.MyApplicationData> _mad= dbContext.MyApplicationData.Select(a => a).ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM