Я новичок в APS. Net core MVC и хочу отобразить данные базы данных на веб-странице. Я создал класс Model, похожий на таблицу базы данных, как показано в приведенном ниже коде:
public class Customer
{ [Key]
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public DateTime DateOfBirth{ get; set; }
public string Address{ get; set; }
}
и класс Controller:
public class CustomersController : Controller
{
private readonly ApplicationDbContext _db;
public CustomersController(ApplicationDbContext db)
{
_db = db;
}
// Get Data
public async Task<IActionResult> Index()
{
return View(await _db.Customers.ToListAsync());
}
}
и страницу просмотра
@model IEnumerable<Customers>
@{
ViewData["Title"] = "Customers List";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h1>Records</h1>
<p>
<a asp-action="Create">Create New</a>
</p>
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.Id)
</th>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.Age)
</th>
<th>
@Html.DisplayNameFor(model => model.DateOfBirth)
</th>
<th>
@Html.DisplayNameFor(model => model.Address)
</th>
</tr>
</thead>
Когда я запускаю приложение и перехожу на страницу, появляется следующее сообщение:
Ошибка операции базы данных при обработке запроса. InvalidCastException: невозможно привести объект типа «System.Int64» к типу «System.Int32».
Применение существующих миграций для ApplicationDbContext может решить эту проблему. Существуют миграции для ApplicationDbContext, которые не были применены к база данных
20200305172409_Customers Apply Migrations
В Visual Studio вы можете использовать консоль диспетчера пакетов для применения отложенных миграций к базе данных:
PM> Update-Database В качестве альтернативы вы можно применить отложенные миграции из командной строки в каталоге вашего проекта:
do tnet ef обновление базы данных
Я пытался добавить-миграцию и обновить- базы данных, но в консоли диспетчера пакетов появляется следующее сообщение:
Не удалось выполнить команду DbCommand (224 мс) [Parameters = [], CommandType = 'Text', CommandTimeout = '30 '] CREATE TABLE [Customers] (В базе данных уже есть объект с именем «Клиенты».
Служба соединений i n startup.cs по умолчанию:
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));