Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在DotNet Core 2.2 Web API C中创建三层体系结构_C#_Asp.net Core_Design Patterns_Asp.net Core Webapi_3 Tier - Fatal编程技术网

C# 在DotNet Core 2.2 Web API C中创建三层体系结构

C# 在DotNet Core 2.2 Web API C中创建三层体系结构,c#,asp.net-core,design-patterns,asp.net-core-webapi,3-tier,C#,Asp.net Core,Design Patterns,Asp.net Core Webapi,3 Tier,我正在从事WebAPI核心2.2的工作,需要设计3层架构。 我该怎么做呢 我的项目结构如下 在Web API项目中 public void ConfigureServices(IServiceCollection services) { services.AddDbContext<HrmsDbContext>(opt => opt.UseSqlServer(Configuration.GetConnection

我正在从事WebAPI核心2.2的工作,需要设计3层架构。 我该怎么做呢

我的项目结构如下

在Web API项目中

public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext<HrmsDbContext>(opt =>
              opt.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}
在DAL库项目中,我创建了DBContext并提供了如下所示的connectionstring

有没有更好的方法让我不用在两个地方提供连接字符串?并以良好的方式编写三层体系结构

任何帮助都将不胜感激

层与层

你的问题围绕着层而不是层

层-层只是应用程序组件的物理分离

层-层充当更多的逻辑分隔符,用于分隔和组织实际代码。您经常会听到业务逻辑层、表示层等术语。这些只是在应用程序中组织所有代码的简单方法

如果您有一个web应用程序,其中包含在同一台计算机/服务器上运行的数据访问和业务逻辑,那么您将拥有一层中的三层应用程序

现在,如果您的数据访问托管在不同的机器/服务器上,并且您的业务也托管在不同的机器/服务器上,那么您现在将拥有一个三层应用程序

设置连接字符串

您已在启动中引用了连接字符串并将其添加到服务中。您不需要再次定义连接字符串并使用内置DI使用db上下文。 代码可能是这样的

开办班

层与层

你的问题围绕着层而不是层

层-层只是应用程序组件的物理分离

层-层充当更多的逻辑分隔符,用于分隔和组织实际代码。您经常会听到业务逻辑层、表示层等术语。这些只是在应用程序中组织所有代码的简单方法

如果您有一个web应用程序,其中包含在同一台计算机/服务器上运行的数据访问和业务逻辑,那么您将拥有一层中的三层应用程序

现在,如果您的数据访问托管在不同的机器/服务器上,并且您的业务也托管在不同的机器/服务器上,那么您现在将拥有一个三层应用程序

设置连接字符串

您已在启动中引用了连接字符串并将其添加到服务中。您不需要再次定义连接字符串并使用内置DI使用db上下文。 代码可能是这样的

开办班

public static IServiceCollection AddCustomDbContext(this IServiceCollection services, IConfiguration configuration)
{

    // Add DbContext using SQL Server Provider
    services.AddDbContext<PaymentDbContext>(options =>
        options.UseSqlServer(configuration.GetConnectionString("myconnectionstring"), x => x.MigrationsAssembly("Payment.Persistence")));

    return services;
}
public class PaymentDbContext : DbContext
    {
        public PaymentDbContext(DbContextOptions<PaymentDbContext> options)
            : base(options)
        {

        }

        public DbSet<Payments> Payments { get; set; }    


    }    
 private readonly PaymentDbContext _context;


 public PaymentsRepository(PaymentDbContext dbContext)
 {
 _context = dbContext;
}