簡體   English   中英

InvalidOperationException:在應用程序配置文件中找不到名為“PayMyRentEntities”的連接字符串

[英]InvalidOperationException: No connection string named 'PayMyRentEntities' could be found in the application config file

致力於將 .NET Framework 遷移到 .NET core 6。我正在嘗試運行無法從 appsettings.json 文件讀取連接字符串的應用程序。 我也展示了 appsettings.json 文件。 請讓我知道我需要做什么。 舊應用程序從 web.config 文件中讀取。

上下文文件

 public partial class PayMyRentEntities : DbContext
  {        

    public PayMyRentEntities()
        : base("name=PayMyRentEntities")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

    public virtual DbSet<Category> Categories { get; set; }
    public virtual DbSet<Hospital> Hospitals { get; set; }
    public virtual DbSet<LookupType> LookupTypes { get; set; }
    public virtual DbSet<LookupValue> LookupValues { get; set; }

  }

應用設置.json

   {   

   "WebApiPublishUrl": "http://localhost:61330/",
     "ConnectionStrings": {
    "PayMyRentEntities": "metadata=res://*/PMR.csdl|res://*/PMR.ssdl|res://*/PMR.msl;provider=System.Data.SqlClient;provider connection string=\u0022data source=ACDSK3;initial catalog=Phnix;user id=hyd3;password=hyd3;integrated security=false;MultipleActiveResultSets=True;App=EntityFramework\u0022"

  }
}

運行時錯誤:

在此處輸入圖像描述

由於您使用的是 .net core 6,因此是時候了解依賴注入了。

  1. 在您的啟動中注冊數據庫

    builder.services.AddPooledDbContextFactory<PayMyRentEntities>((serviceProvider, builder) => { var config = serviceProvider.GetService<IConfiguration>();. _ = builder.UseSqlServer(config.GetConnectionString("PayMyRentEntities"));EnableServiceProviderCaching(false), }: poolSize: 32)
  2. 然后獲取您班級的注冊選項

    public PayMyRentEntities(DbContextOptions options)
        : base(options) {}
  1. 設置完所有內容后,讓 .net 處理您的構造函數
public sealed class SomeDotnetClass{
  private readonly PayMyRentEntities _context;
  public SomeDotnetClass(PayMyRentEntities context){
  _context = context;
 }
}
  1. 當然,要實現這一點,您還必須注冊您的課程。
builder.services.AddScoped<SomeDotnetClass>()

通過這種方式,您可以確保您的數據庫連接將由 .net 管理,並且每個 API 端點都會獲得自己唯一的連接,直到端點完成其工作。 並且代碼的可讀性也得以保持。

1)程序.cs

builder.Services.AddDbContext<PayMyRentEntities >(options => { options.UseSqlServer(builder.Configuration.GetConnectionString("DefualtConnection")); }); 2)數據庫上下文:

public class PayMyRentEntities : DbContext
    {
        public PayMyRentEntities (DbContextOptions<PayMyRentEntities > options) : base(options)
        {
        }
    }

3) 應用設置.json

"ConnectionStrings": {
    "DefualtConnection": "Data Source=.; Initial Catalog = nameDatabase;  Integrated Security=True; user id=hyd3;password=hyd3"
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM