c# - 指定的强制转换在 Visual Studio 2019 中无效
问题描述
我在 Visual Studio 2019 中有一个使用 Oracle 数据库的 ASP.NET Core Web 应用程序 C#,当我运行它时,它会打开主页,上面只有一个链接,当我单击时,它会抛出一个未处理的异常,指定演员表无效。
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)
解决方案
推荐阅读
- reactjs - 使用带有 React 文本输入和 Typescript 的 lodash 油门
- python - 从python中的灰度热图创建多色阈值图像
- angular - 使用 angular 4 使用 *ngIf 的文本区域验证
- postgresql - 触发复制表的数据更改 - postgres
- javascript - 仅在以下情况下才显示页面
- scala - Scala:将数据框的字典列转换为表
- arrays - Swift:构造一个将处理 JSON/Dictionalry 解析的对象的正确实现是什么
- android - 设置 imageAnalysis.setAnalyzer() 时编译错误
- python - 无法将输入键绑定到按钮 Python Tkinter
- python - 我想在条目中输入一个值,按一个按钮并将该值保存在一个 var 中并使用该值创建一个 .txt 但它不起作用