[英].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。
獲取連接和構建數據庫的步驟
您的連接字符串看起來不錯,只需確保您的數據庫連接字符串正確即可。
如果您需要更多信息, 這里是一個鏈接
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.