C# asp.net mvc core 2生成的控制器中出错
我正在开发一个ASP.NETCore2MVC应用程序 我使用以下命令为我的后台办公室为每个表生成一个控制器:C# asp.net mvc core 2生成的控制器中出错,c#,asp.net-core,asp.net-core-2.0,C#,Asp.net Core,Asp.net Core 2.0,我正在开发一个ASP.NETCore2MVC应用程序 我使用以下命令为我的后台办公室为每个表生成一个控制器: dotnet aspnet-codegenerator --project . controller -name MYTABLEController -m MYTABLE -dc MYDBContext 替换MYTABLE和MYDBContext是示例 以下是csharp控制器的外观: namespace MYPROJECT.Controllers { public class
dotnet aspnet-codegenerator --project . controller -name MYTABLEController -m MYTABLE -dc MYDBContext
替换MYTABLE和MYDBContext是示例
以下是csharp控制器的外观:
namespace MYPROJECT.Controllers
{
public class MYTABLEController : Controller
{
private readonly MYDBContext _context;
public ContactsController(MYDBContext context)
{
_context = context;
}
您可以看到它创建了一个接受一个参数的构造函数:数据库对象entityframework
当我调用web页面时,我在这个上下文中得到一个错误,因为它没有初始化
以下是我要做的工作:
namespace MYPROJECT.Controllers
{
public class MYTABLEController : Controller
{
private readonly MYDBContext _context = new MYDBContext();
public ContactsController()
{
}
因此,我的问题是:
有没有解决这个问题的最佳方法?我想知道这是否真的是一个错误,或者我是否错过了什么
生成的每个chtml视图的外观都非常难看。有没有一些选择可以让你更性感
谢谢生成的控制器代码看起来不错。您没有提到确切的错误,但是,我假设您得到了错误,因为您没有在您的服务容器中添加MYDBContext 在startup.cs文件中,您需要将此MYDBContext添加到服务容器中,以便您的控制器能够正确地注入它。例如
services.AddDbContext<MYDBContext>(options =>
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));
然后,这意味着您的搭建的DbContext没有正确配置为使用正确的options参数注入。将构造函数更新为:
public partial class MYDBContext : DbContext
{
public MYDBContext(DbContextOptions<MYDBContext> options)
: base(options)
{
}
我现在得到了这个错误:System.ArgumentException:AddDbContext是通过配置调用的,但是上下文类型“MyDBContext”只声明了一个无参数构造函数。更新了答案,请查看。您可能需要更新DbContext类。在这种情况下,我遇到了InvalidOperationException:在尝试激活“XXXXX.ControllersXXXController”时,无法解析类型“XXXX.XXXXContext”的服务。很抱歉,事实上一切正常
public partial class MYDBContext : DbContext
{
public MYDBContext(DbContextOptions<MYDBContext> options)
: base(options)
{
}