SqlException: неверное имя столбца 'EmployeeID1' - PullRequest
0 голосов
/ 28 марта 2020

В настоящее время я пытаюсь создать базовое веб-приложение ASP. NET с Visual Studio 2019. Цель приложений - отобразить все данные, к которым был получен доступ из базы данных localdb, которую я импортировал. Приложение должно правильно выводить всю информацию в таблицу, и пользователь должен иметь возможность создавать новую запись, редактировать, удалять, а также просматривать сведения об одной отдельной записи на другом экране.

Ошибка, которую я получаю при попытке загрузить приложение, следующая:

SqlException: Неверное имя столбца 'EmployeeID1'.

Следующий снимок экрана - это структура базы данных, из которой я пытаюсь получить данные:

Структура базы данных

Этот снимок экрана представляет собой структуру файла:

Структура файла

Вот как я пытаюсь отобразить информацию в таблице:

Код

При загрузке приложения отображается следующая ошибка:

SqlException: недопустимое имя столбца 'EmployeeID1'.

System.Data.SqlClient.SqlCommand + <> c .b__122_0 (результат задачи)
System.Threading.Tasks.ContinuationResultTaskFromResultTask.InnerInvoke ()
System.Threading.ExecutionContext.RunInternal (обратный вызов ExecutionContext, ContextCallback, SystemCallback. Task.ExecuteW ithThreadLocal (ref Task currentTaskSlot)
Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteAsyn c (соединение IRelationalConnection, параметр DbCommandMethod executeMethod, параметр IReadOnlyDictionaryWegnynEqEgnEQuNeQuNeQuenen.ExoNecure.Exe .BufferlessMoveNext (DbContext , буфер bool, CancellationToken cancellationToken)
Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.ExecuteAsyn c (операция TState, Fun), состояние 1060 * verifySucceeded, CancellationToken CancellationToken) * * Microsoft.EntityFrameworkCore.Query.Internal.AsyncQueryingEnumerable тысячу тридцать-девять + AsyncEnumerator.MoveNext (CancellationToken CancellationToken) System.Linq.AsyncEnumerable + SelectEnumerableAsyncIterator.MoveNextCore (CancellationToken CancellationToken) System.Linq.AsyncEnumerable + AsyncIterator.MoveNext (CancellationToken CancellationToken ) Microsoft. EntityFrameworkCore.Query.Internal.AsyncLinqOperatorProvider + ExceptionInterceptor + EnumeratorExceptionInterceptor.MoveNext (CancellationToken cancellationToken) System.Linq.AsyncEnumerable. .IndexModel.OnGetAsyn c () в Index.cs html .cs -

        //public IList<Employee> Employee { get; set; }
        public IList<Employee> Employees { get;set; }

        public async Task OnGetAsync()
        {
            Employees = await _context.Employees.ToListAsync();
        }
    }
}
Microsoft.AspNetCore.Mvc.RazorPages.Internal.ExecutorFactory+NonGenericTaskHandlerMethod.Execute(object receiver, object[] arguments)
Microsoft.AspNetCore.Mvc.RazorPages.Internal.PageActionInvoker.InvokeHandlerMethodAsync()
Microsoft.AspNetCore.Mvc.RazorPages.Internal.PageActionInvoker.InvokeNextPageFilterAsync()
Microsoft.AspNetCore.Mvc.RazorPages.Internal.PageActionInvoker.Rethrow(PageHandlerExecutedContext context)
Microsoft.AspNetCore.Mvc.RazorPages.Internal.PageActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.RazorPages.Internal.PageActionInvoker.InvokeInnerFilterAsync()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()
Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

Основное сообщение, которое мне было сказано, заключается в том, что ошибка заключается в следующем коде :

 Employees = await _context.Employees.ToListAsync();

Следующий код - это то, что у меня есть для моего файла Employee.cs в папке Models:

using System;
using System.Collections.Generic;

namespace WebApp2.Models
{
    public class Employee
    {
        public int EmployeeID { get; set; }
        public string LastName { get; set; }
        public string FirstName { get; set; }
        public string Title { get; set; }
        public string TitleOfCourtesy { get; set; }
        public DateTime BirthDate { get; set; }
        public DateTime HireDate { get; set; }
        public string Address { get; set; }
        public string City { get; set; }
        public string Region { get; set; }
        public string PostalCode { get; set; }
        public string Country { get; set; }
        public string HomePhone { get; set; }
        public string Extension { get; set; }
        public string Notes { get; set; }
        public int ReportsTo { get; set; }
        public string PhotoPath { get; set; }

        public ICollection<Employee> Employees { get; set; }
    }
}

Этот следующий код - то, что у меня сейчас есть для моего index.cs html .cs файл. Ошибка исходит из последней строки кода этого кода:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore;
using WebApp2.Models;

namespace WebApp2
{
    public class IndexModel : PageModel
    {
        private readonly WebApp2.Models.Northwind _context;

        public IndexModel(WebApp2.Models.Northwind context)
        {
            _context = context;
        }

        //public IList<Employee> Employee { get; set; }
        public IList<Employee> Employees { get;set; }

        public async Task OnGetAsync()
        {
            Employees = await _context.Employees.ToListAsync();
        }
    }
}

Я только новичок в этом и не очень понимаю, почему это происходит, поэтому любая помощь приветствуется. В отношении этой проблемы есть некоторые ответы на stackoverflow, но из ответов я не был полностью уверен, как приспособить его к моей ситуации. Я надеюсь, что дал достаточно подробностей относительно того, почему это может происходить. Если нет, пожалуйста, попросите дополнительную информацию, и я могу сообщить вам. Спасибо.

1 Ответ

0 голосов
/ 29 марта 2020

publi c Сотрудники ICollection {get; набор; }

Вам необходимо настроить ReportsTo в качестве свойства внешнего ключа для свойства навигации менеджера. EG

 public int ReportsTo { get; set; }

 [ForeignKey(nameof(Employee.ReportsTo))]
 public virtual Employee Manager {get;set;}

 public ICollection<Employee> Employees { get; set; }
...