dotnet 核心中的 Dbcontext 对象瞬态

Posted

技术标签:

【中文标题】dotnet 核心中的 Dbcontext 对象瞬态【英文标题】:Dbcontext object transient in dotnet core 【发布时间】:2018-01-19 04:54:54 【问题描述】:

我正在使用实体框架在 dotnet 核心中创建一个 webapi 应用程序。当我浏览文档时。我可以使用 DI 在 dotnet core 中注入 dbcontext 对象。但是当我这样做时,整个应用程序都使用一个 dbcontext 对象。如何将 dbcontext 设为瞬态?如果有任何例子,它真的会帮助我。

请在下面找到我现有的代码。

这是我在 ConfigureService 中写的代码

  public void ConfigureServices(IServiceCollection services)
        
           services.AddDbContext<DataAccess.XXXXContext>(options => options.Usemysql(Configuration["ConnectionStrings:DefaultConnection"]),ServiceLifetime.Transient);
        

这是我在 DBcontext 类中写的代码

 public partial class XXXXContext : DbContext
    
        private readonly Logger logger = LogManager.GetCurrentClassLogger();

        public XXXXContext(DbContextOptions<XXXXContext> options) :base(options)
        
            logger.Debug("XXXXContext created");
        
     

如果你看到我已经在 AddDbContext 方法中编写了 Transient。所以每次如果它创建对象。我的构造函数应该调用。但我只接到一次电话。

【问题讨论】:

我们需要看看你的代码老兄...... 我已经用源代码编辑了我的帖子 【参考方案1】:

我已经使用单独的语句完成了此操作。

public void ConfigureServices(IServiceCollection services)

    services.AddDbContext<DataAccess.XXXXContext>(options => options.UseMySQL(Configuration["ConnectionStrings:DefaultConnection"]));

    services.AddTransient<DataAccess.XXXXContext>();

【讨论】:

以上是关于dotnet 核心中的 Dbcontext 对象瞬态的主要内容,如果未能解决你的问题,请参考以下文章

核心数据:瞬态值脏对象

DotNet Core,没有为此 DbContext 配置数据库提供程序

运行 `dotnet ef dbcontext scaffold` 时省略一列

dotnet-ef dbcontext 脚手架在与 SQLite 一起使用时生成 HasColumnType 包括长度与 HasMaxLength

由于 dotnet ef dbcontext --json 失败,无法在 Visual Studio 2019 中列出实体框架迁移

dotnet ef 迁移 name dotnet ef 数据库更新