У меня есть ASP. NET Базовое веб-приложение C# в Visual Studio 2019, использующее базу данных Oracle, и когда я запускаю ее, она нормально открывает домашнюю страницу, на ней просто есть ссылка, и когда Я нажимаю, оно выдает мне необработанное исключение, указанное приведение неверно.
TipoProdutoRepository.cs код:
using FiapSmartCity.Models;
using FiapSmartCity.Repository.Context;
using System.Collections.Generic;
using System.Linq;
namespace FiapSmartCity.Repository
{
public class TipoProdutoRepository
{
private readonly DataBaseContext context;
public TipoProdutoRepository()
{
context = new DataBaseContext();
}
public IList<TipoProduto> Listar()
{
return context.TipoProduto.ToList();
}
public TipoProduto Consultar(int id)
{
return context.TipoProduto.Find(id);
}
public void Inserir(TipoProduto tipoProduto)
{
context.TipoProduto.Add(tipoProduto);
context.SaveChanges();
}
public void Alterar(TipoProduto tipoProduto)
{
context.TipoProduto.Update(tipoProduto);
context.SaveChanges();
}
public void Excluir(int id)
{
var tipoProduto = new TipoProduto()
{
IdTipo = id
};
context.TipoProduto.Remove(tipoProduto);
context.SaveChanges();
}
}
}
ошибка в:
return context.TipoProduto.ToList();
TipoProdutoController.cs код:
using FiapSmartCity.Models;
using FiapSmartCity.Repository;
using Microsoft.AspNetCore.Mvc;
namespace FiapSmartCity.Controllers
{
public class TipoProdutoController : Controller
{
private readonly TipoProdutoRepository tipoProdutoRepository;
public TipoProdutoController()
{
tipoProdutoRepository = new TipoProdutoRepository();
}
[HttpGet]
public IActionResult Index()
{
var listaTipo = tipoProdutoRepository.Listar();
return View(listaTipo);
}
[HttpGet]
public ActionResult Cadastrar()
{
return View(new TipoProduto());
}
[HttpPost]
public ActionResult Cadastrar(Models.TipoProduto tipoProduto)
{
if (ModelState.IsValid)
{
tipoProdutoRepository.Inserir(tipoProduto);
@TempData["mensagem"] = "Tipo cadastrado com sucesso!";
return RedirectToAction("Index", "TipoProduto");
}
else
{
return View(tipoProduto);
}
}
[HttpGet]
public ActionResult Editar(int Id)
{
var tipoProduto = tipoProdutoRepository.Consultar(Id);
return View(tipoProduto);
}
[HttpPost]
public ActionResult Editar(Models.TipoProduto tipoProduto)
{
if (ModelState.IsValid)
{
tipoProdutoRepository.Alterar(tipoProduto);
@TempData["mensagem"] = "Tipo alterado com sucesso!";
return RedirectToAction("Index", "TipoProduto");
}
else
{
return View(tipoProduto);
}
}
[HttpGet]
public ActionResult Consultar(int Id)
{
var tipoProduto = tipoProdutoRepository.Consultar(Id);
return View(tipoProduto);
}
[HttpGet]
public ActionResult Excluir(int Id)
{
tipoProdutoRepository.Excluir(Id);
@TempData["mensagem"] = "Tipo removido com sucesso!";
return RedirectToAction("Index", "TipoProduto");
}
}
}
ошибка при:
var listaTipo = tipoProdutoRepository.Listar();
И вот полное исключение:
System.InvalidCastException: Specified cast is not valid.
at Oracle.ManagedDataAccess.Client.OracleDataReader.GetBoolean(Int32 i)
at lambda_method(Closure , DbDataReader )
at Microsoft.EntityFrameworkCore.Storage.Internal.TypedRelationalValueBufferFactory.Create(DbDataReader dataReader)
at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable`1.Enumerator.BufferlessMoveNext(DbContext _, Boolean buffer)
at Oracle.EntityFrameworkCore.Storage.Internal.OracleExecutionStrategy.Execute[TState,TResult](TState state, Func`3 operation, Func`3 verifySucceeded)
at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable`1.Enumerator.MoveNext()
at Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider._TrackEntities[TOut,TIn](IEnumerable`1 results, QueryContext queryContext, IList`1 entityTrackingInfos, IList`1 entityAccessors)+MoveNext()
at Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.ExceptionInterceptor`1.EnumeratorExceptionInterceptor.MoveNext()
at System.Collections.Generic.List`1.AddEnumerable(IEnumerable`1 enumerable)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at FiapSmartCity.Repository.TipoProdutoRepository.Listar() in C:\Users\raphael\source\repos\FiapSmartCity\Repository\TipoProdutoRepository.cs:line 23
at FiapSmartCity.Controllers.TipoProdutoController.Index() in C:\Users\raphael\source\repos\FiapSmartCity\Controllers\TipoProdutoController.cs:line 16
at lambda_method(Closure , Object , Object[] )
at Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute(Object target, Object[] parameters)
at Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor.SyncActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()
at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)
at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()
at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()
at Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext)
at Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware.Invoke(HttpContext httpContext)
at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)