gpt4 book ai didi

asp.net-core - 在 Asp.Net Core 中注入(inject) DbContext。具体类型还是接口(interface)?

转载 作者:行者123 更新时间:2023-12-04 12:29:36 27 4
gpt4 key购买 nike

在 Asp.Net Core 项目中,我正在注入(inject) Entity Framework DbContext:

public MessageRepository(MyDbContext context) {
}

配置是:
services
.AddEntityFramework()
.AddSqlServer()
.AddDbContext<Context>(x => x.UseSqlServer(connectionString);

我应该创建一个接口(interface) IMyDbContext 并注入(inject)它吗?
public class MyDbContext : DbContext, IMyDbContext { }

public MessageRepository(IMyDbContext context) {
}

在所有 ASP.NET Core 示例中,我看到具体类型 MyDbContext 正在被注入(inject),而不是接口(interface)......

我应该选择什么选项?

最佳答案

目前我自己正在做一个项目,我决定使用 2 个这样的接口(interface)

public interface IDbContext : IDisposable
{
DbContext Instance { get; }
}


public interface IApplicationDbContext : IDbContext
{
DbSet<MyEntity> MyEntities { get; set; }
...
}

然后,我的具体 DbContext 将只实现应用程序上下文接口(interface)
public class ApplicationDbContext : DbContext, IApplicationDbContext
{
public DbContext Instance => this

public DbSet<MyEntity> MyEntities { get; set; }
}

这允许我将 Application 上下文的实现作为应用程序上下文接口(interface)注入(inject),同时还允许我通过 Instance 属性 getter 访问 DbContext 方法,而无需将 DbContext 类所需的方法添加到接口(interface)。

到目前为止,这很好用。

关于asp.net-core - 在 Asp.Net Core 中注入(inject) DbContext。具体类型还是接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36583439/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com