ASP. net core3.1 mvc отображение данных - PullRequest
0 голосов
/ 06 марта 2020

Я новичок в 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")));
...