c# - 通过 .Net Core 控制台应用程序从 Entity Framework Core 1.x 连接到 localdb

标签 c# visual-studio-2017 entity-framework-core

如何从 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 控制台应用程序来完成一些繁重的工作(将 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; }
}

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

我能够创建初始迁移。

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

update-database

我收到以下错误:

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

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

完整的错误堆栈:

Full error stack

最佳答案

@ 表示您正在使用逐字字符串文字。您不应转义服务器和实例名称之间的 \

关于c# - 通过 .Net Core 控制台应用程序从 Entity Framework Core 1.x 连接到 localdb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45488646/

相关文章:

c++ - 为什么按值传递 string_view?为什么 Visual Studio 不能对此进行优化?

c - printf ("%d\n", 4294967296);犯了一些奇怪的错误

c# - 更改生成的联接表的名称(多对多)-EF Core 5

asp.net-core - dnu 恢复错误(找不到路径的一部分..)

c# - Application.DoEvents 内存泄漏?

c# - 调用使用 yield 返回的方法时出现错误 'Iterator cannot contain return statement '

c - Spectre 警告 MSVC C5040 的解决方法

C# 线程 ListView

c# - Windows 服务与 Windows 应用程序 - 最佳实践

c# - 如何使用 EntityFramework 7 和 Asp.Net 5 调用 SQL 存储过程