【问题标题】:Error trying to scaffold a view in ASP.NET Core 6.0 MVC尝试在 ASP.NET Core 6.0 MVC 中构建视图时出错
【发布时间】:2022-07-02 06:47:23
【问题描述】:

我正在尝试使用 Visual Studio 构建一个新的 Razor 视图。我选择了一个模板、我的模型和我的DbContext,然后我收到如下所示的错误消息。

注意事项。我的模型、DbContext 和我的网站都在不同的项目中。从下面的消息来看,我正在使用AddDbContext,并且我有一个接受DbContextOptions<TContext> 参数的构造函数。

我在一篇博客文章中读到了一条评论,该问题是因为我的上下文在另一个项目中。该评论提到需要将Configuration 注入DbContext 以获取连接字符串并手动将其添加到OnConfiguring 覆盖中。

如果这是正确的或如何设置它,我找不到任何示例。任何帮助将不胜感激。

编辑: 从我上面提到的博客评论中测试理论,我将此部分添加到我的 DbContext 中。 ConnectionString 是带有我的连接信息的硬编码字符串常量。这确实有效,让我可以搭建脚手架,所以问题仍然存在。如何将此连接字符串注入我的 DbContext 以允许脚手架工作?

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    if (!optionsBuilder.IsConfigured)
    {
         optionsBuilder.UseSqlServer(ConnectionString);
    }
    else
    {
         base.OnConfiguring(optionsBuilder);
    }
}

编辑:因此,在进行此更改后,我签入了代码并让另一个开发人员接手。看来上面的这一部分只需要在那里就可以让脚手架工作。他从未更改连接字符串以指向他的环境。他不再遇到上面的错误了。

【问题讨论】:

  • 你使用的脚手架命令是什么?
  • 右键单击视图 > 添加 > 新脚手架项目 > 剃刀视图

标签: visual-studio entity-framework asp.net-core asp.net-core-mvc .net-6.0


【解决方案1】:

我不确定实际问题是什么,但似乎我们在设计时创建 DbContext 时遇到了问题。我手动添加了下面的代码,它现在可以工作了。这只是一个临时解决方案。

   public AppDbContext CreateDbContext(string[] args)
        {
            var optionsBuilder = new DbContextOptionsBuilder<AppDbContext>();
            optionsBuilder.UseSqlServer("Data Source=.;Initial Catalog=JwtTemplate;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False");
            return new AppDbContext(optionsBuilder.Options);
        }

参考:https://stackoverflow.com/a/70559350

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    相关资源
    最近更新 更多