在 DotNet Core 2.2 Web API C# 中创建 3 层架构
Create 3 Tier Architecture In DotNet Core 2.2 Web API C#
我在 Web API Core 2.2 上工作,需要设计 3 层架构。
我该怎么做。
我的项目结构如下
在网络中 API 项目..
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<HrmsDbContext>(opt =>
opt.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}
在 DAL(库项目中,我创建了 DBContext 并提供了如下所示的连接字符串。
有没有更好的方法让我在两个地方都没有提供connectionstring?并以良好的方式编写 3 层架构。
如有任何帮助,我们将不胜感激。
层与层
你的问题是围绕层而不是层次。
层 - 层只是应用组件的物理分隔。
层 - 层充当更多的逻辑分隔符,用于分隔和组织您的实际代码。您会经常听到 "Business Logic Layer"、"Presentation Layer" 等术语。这些只是在您的应用程序中组织所有代码的方法。
如果您的 Web 应用程序包含您的数据访问和业务逻辑 运行 在同一个 machine/Server 上,那么您将在 1 层中拥有 3 层应用程序。
现在,如果您的数据访问托管在不同的 machine/server 上,并且您的业务也托管在不同的 machine/server 上,那么您现在将拥有 3 层的 3 层应用程序。
设置连接字符串
您在启动时引用了连接字符串并将其添加到服务中。您不需要再次定义连接字符串并使用内置 DI 的数据库上下文。
代码可能如下所示!
启动class
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;
}
上下文Class
public class PaymentDbContext : DbContext
{
public PaymentDbContext(DbContextOptions<PaymentDbContext> options)
: base(options)
{
}
public DbSet<Payments> Payments { get; set; }
}
使用 DI 访问 Context
private readonly PaymentDbContext _context;
public PaymentsRepository(PaymentDbContext dbContext)
{
_context = dbContext;
}
我在 Web API Core 2.2 上工作,需要设计 3 层架构。 我该怎么做。
我的项目结构如下
在网络中 API 项目..
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<HrmsDbContext>(opt =>
opt.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}
在 DAL(库项目中,我创建了 DBContext 并提供了如下所示的连接字符串。
有没有更好的方法让我在两个地方都没有提供connectionstring?并以良好的方式编写 3 层架构。
如有任何帮助,我们将不胜感激。
层与层
你的问题是围绕层而不是层次。
层 - 层只是应用组件的物理分隔。
层 - 层充当更多的逻辑分隔符,用于分隔和组织您的实际代码。您会经常听到 "Business Logic Layer"、"Presentation Layer" 等术语。这些只是在您的应用程序中组织所有代码的方法。
如果您的 Web 应用程序包含您的数据访问和业务逻辑 运行 在同一个 machine/Server 上,那么您将在 1 层中拥有 3 层应用程序。
现在,如果您的数据访问托管在不同的 machine/server 上,并且您的业务也托管在不同的 machine/server 上,那么您现在将拥有 3 层的 3 层应用程序。
设置连接字符串
您在启动时引用了连接字符串并将其添加到服务中。您不需要再次定义连接字符串并使用内置 DI 的数据库上下文。 代码可能如下所示!
启动class
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;
}
上下文Class
public class PaymentDbContext : DbContext
{
public PaymentDbContext(DbContextOptions<PaymentDbContext> options)
: base(options)
{
}
public DbSet<Payments> Payments { get; set; }
}
使用 DI 访问 Context
private readonly PaymentDbContext _context;
public PaymentsRepository(PaymentDbContext dbContext)
{
_context = dbContext;
}