[英]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.