c# - 如何在 .NET Core 中实现 DbContext 连接字符串?

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

我的情况与此链接非常相​​似,或者至少我的代码是相似的,我正在尝试找到一种在 .NET Core 语法中应用相同方法的方法。

Pass connection string to code-first DbContext

我的具体代码如下:

public partial class CompanyFormsContext : DbContext
{
    public CompanyFormsContext()
        : base("name=CompanyFormsContext")
    {
    }

    public CompanyFormsContext(string connName)
        : base("name=" + connName)
    {
    }
    ...
}

我收到一条错误消息:

Error CS1503 Argument 1: cannot convert from 'string' to 'Microsoft.EntityFrameworkCore.DbContextOptions' CompanyForms..NETCoreApp,Version=v1.0

当我检查 base("name=CompanyFormsContext")base("name="= connName) 中的括号时。

在 .NET Core 中实现此功能的正确方法是什么?

编辑:

我想分享一下,我的 appsettings.json 文件中有以下数据库连接信息:(但是,我在 startup.cs 中没有设置)

  "Data": {
    "CompanyFormsContext": {
      "ConnectionString": "Server=(localdb)\\projectsv13;Database=companyforms;Trusted_Connection=True;"
    },
    "CompanyFormsContextQA": {
      "ConnectionString": "Server=(localdb)\\projectsv13;Database=companyforms;Trusted_Connection=True;"
    }
  }

我找到了以下链接 Adding DbContextOptions in Startup.cs not registering data store在网站上,我想知道一个简单的 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) 是否足以修复我的连接?

来自链接:

services.AddEntityFramework(Configuration)
    .AddSqlServer()
    .AddDbContext<MyDbContext>(
        options =>
        options.UseSqlServer(Configuration.Get("Data:CompanyFormsContext:ConnectionString"))
    );

我的 Startup.cs 中需要这种服务吗?

最佳答案

另一种选择是调用采用 DbContextOptions 的基本构造函数:

public BooksContext(string connectionString) : base(GetOptions(connectionString))
{
}

private static DbContextOptions GetOptions(string connectionString)
{
    return SqlServerDbContextOptionsExtensions.UseSqlServer(new DbContextOptionsBuilder(), connectionString).Options;
}

关于c# - 如何在 .NET Core 中实现 DbContext 连接字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38878140/

相关文章:

c# - 在 Windows 8.1 XAML/C# 应用程序中,如何精确设置按钮样式?

C# MVVM 计算总数

c# - 通过 Entity Framework 将相关记录插入数据库

c# - 如何从 .NET 应用程序启动默认媒体播放器?

c# - 如何从 ASP.NET Web 服务启动进程(并允许它做它想做的一切)?

c# - 将存储为 List<object> 的子对象转换为父对象

c# - C#查询两个数据库的数据

c# - 无法创建 Google.Apis.Services.BaseClientService 的实例

c# - 如何在 Entity Framework 中处理空值?

c# - 以编程方式在方法体结束前插入代码行