在网站发布期间没有在项目中找到数据库

时间:2017-11-15 19:42:25

标签: c# asp.net asp.net-mvc entity-framework

我正在尝试从Visual Studio 2017社区中发布带有Entity Framework Core的MVC Core项目,但是VS找不到任何包含DbContext的项目,因此它说:项目中没有找到数据库。

DbContext不在网站项目中(我想发布),但位于网站项目引用的自己的dll项目中。

我曾尝试在Windows 10上发布VS 2017社区版和预览版。之前在Windows 8上,我可以使用预览版,它运行良好。现在我在Windows 10上。

关于我的环境的Som信息:

  • Visual Studio 2017社区(和预览)
  • 带有ASP.NET Core和EF Core的.NET 4.6
  • Windows 10

这是发布对话框: No databases found in the project during publishing

3 个答案:

答案 0 :(得分:2)

解决方案是安装Visual Studio 2017 Professional,现在我可以看到我的DbContext类并在发布时应用迁移。

答案 1 :(得分:1)

在我的情况下,问题是在appsettings.dev.json文件中定义了连接字符串,而在appsettings.json文件中没有定义。

将连接字符串移至appsettings.json文件后,在发布对话框中正确检测到数据库。

答案 2 :(得分:0)

我认为您只需要作为Private Sub Workbook_BeforeClose(Cancel As Boolean) On Error Resume Next gCount = Now + TimeValue("00:00:10") Application.OnTime gCount, "ResetTime", Schedule:=False ThisWorkbook.Worksheets("Interface").Select 'Hides all sheets but the interface sheet Sheet2.Visible = False Sheet3.Visible = False Sheet6.Visible = False Sheet7.Visible = False Sheet8.Visible = False End Sub 中的连接字符串,因为发布工具可能会在appsettings.json中搜索任何连接字符串,之后,它将在appsettings.json中查找所找到的连接字符串。

所以,如果您有这样的代码-

dbContect

您需要添加此-

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();

    var connection = Configuration.GetConnectionString("MyConnectionString");
    services.AddDbContext<MyDbContext>(options => options.UseSqlServer(connection));
}

发布工具将寻找"ConnectionStrings": { "MyConnectionString": "" } ,并找到我们将MyConnectionString注册为DbContext的服务。