通过.Net Core Console应用程序从Entity Framework Core 1.x连接到localdb

Bob*_*bor 3 c# entity-framework-core visual-studio-2017

如何在Visual Studio中使用.NET Core 1.x控制台应用程序中的Entity Framework Core 1.x?我已经尝试过我从ASP.NET MVC Core 1.x开发中使用的工作流程和命令,并且我遇到了与localdb的连接错误.

如何在控制台应用程序中使用localdb与在ASP.NET MVC Core 1.x应用程序中工作不同?

背景

几次成功使用ASP.NET MVC Core 1.x和Entity Framework Core 1.x之后,我需要创建一个简单的.NET Core Console应用程序来完成一些繁重的工作(将XML加载到新数据库中,创建与松散匹配的表格XML的结构).

我用NuGet安装

  • Microsoft.EntityFrameworkCore.Design(1.1.2)
  • Microsoft.EntityFrameworkCore.SqlServer(1.1.2)
  • Microsoft.EntityFrameworkCore.Tools(1.1.1)

我用DbSets创建了一个DbContext.我添加了一个OnConfiguring()方法并对连接字符串进行了硬编码,就像我在网上的代码示例中找到的一样.我的DbContext看起来像这样:

public class ApplicationDbContext : DbContext
{
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(@"Server=(localdb)\\mssqllocaldb;Database=MyXmlExport;Trusted_Connection=True;MultipleActiveResultSets=true");
    }

    public DbSet<Author> Authors { get; set; }
    public DbSet<Thread> Threads { get; set; }
    public DbSet<Post> Posts { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我从一个有效的ASP.NET MVC Core 1.x应用程序的appsettings.json中获取连接字符串,将数据库名称更改为简单的名称("MyXmlExport").

我能够创建一个初始迁移.

当我尝试使用我习惯的工作流程时,即调用:

update-database
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

"建立与SQL Server的连接时发生与网络相关或特定于实例的错误.未找到服务器或无法访问服务器.验证实例名称是否正确以及SQL Server是否配置为允许远程连接.(提供程序: SQL网络接口,错误:50 - 发生本地数据库运行时错误.指定的LocalDB实例名称无效."

我可以通过Sql Server对象资源管理器连接到localdb实例.我尝试手动创建MyXmlExport数据库,希望这会减少至少一个潜在的问题.但是,当在Console应用程序的上下文中使用时,Visual Studio的工具似乎无法访问数据库.

完整错误堆栈:

完整的错误堆栈

ror*_*ods 7

@意味着您使用的是逐字字符串文字.您不应该\在服务器和实例名称之间进行转义.