簡體   English   中英

.NET core - 將連接字符串讀入 Entity Framework Core

[英].NET core - read connection string into Entity Framework Core

我的項目結構非常標准:

項目結構

EFData

EFData是一個 Entity Framework Core 類庫,它隔離了所有數據庫交互。 數據庫模型和我的DBContext 我以這種方式構建它,因此它與數據庫環境無關。

API 項目當然有對EFData的引用。

如何將連接字符串從API Startup.cs傳遞到DBContext.cs中的EFData

我閱讀了多篇文章,這些文章引用的設置與我的設置不同,我可能希望在我的EFData項目中使用Startup.cs 我沒有那個。

Startup.cs ,我確實有我認為需要的行 -

services.AddDbContext<DBContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

但是EFData對該連接字符串一無所知。

一種方法是在 DBContext.cs 類中添加 ConnectionString 屬性,然后在 API 項目的 startup.cs 上顯式設置它。 在 DBcontext.cs 中添加以下代碼

   using System;
   using System.Data.SqlClient;

   using Microsoft.EntityFrameworkCore;

   public class DBContext 
   {
       public static void SetConnectionString(string connectionString)
       {
           if (ConnectionString == null)

           {
               ConnectionString = connectionString;
           }
           else
           {
               throw new Exception();
           }
       }
       // this part will help you to open the connection
       public static SqlConnection OpenConnection()
       {
           SqlConnection connection = new SqlConnection(ConnectionString);
           connection.Open();
           return connection;
       }

       private static string ConnectionString { get; set; }

       //add the connectionString to options

         protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
       {
           if (!optionsBuilder.IsConfigured)
           {
               optionsBuilder.UseSqlServer(ConnectionString);
           }
       }
   }

現在,在 API 項目中添加 EFData 項目的引用,並在 startup.cs 文件中設置 ConnectionString

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            var connectionString = this.Configuration.GetConnectionString("DBName");
            Namespace.DBContextContext.SetConnectionString(connectionString); //replace namespace with the namespace suitable for your solution

            //here goes rest of your default code
        }

通過這種方式,您應該能夠訪問 API 項目中的 Connection。

獲取連接和構建數據庫的步驟

  1. 在 API 項目中添加對 EFData 項目的引用 - 在 API 項目中執行此操作,單擊依賴項部分並添加對 EFData 類庫的引用。
  2. 然后添加到您的 api 項目中的啟動類並確保連接字符串在您的 ConfigureServices 方法或類似方法中

您的連接字符串看起來不錯,只需確保您的數據庫連接字符串正確即可。

如果您需要更多信息, 這里是一個鏈接

暫無
暫無

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

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