繁体   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