繁体   English   中英

使用 DbConnection 初始化 EF Core DbContext 连接

[英]Initialize EF Core DbContext connection with DbConnection

我正在将 EF6 .net fwk 应用程序迁移到 Entity Framework Core 3.0。 但是,在我的旧 EF6 项目中,我可以选择使用 DbConnection 对象初始化 DbContext,用于实现工作单元并使用相同的事务而不更改连接对象。

public MyDataContext(IDbConnection connection)
        : base((DbConnection) connection, false)
    {
    } 

但是,在 EF 核心中,我只有一个选项来初始化带有 DbContextOptions 的上下文,它需要一个连接字符串。 这将初始化新连接,我将无法处理事务。

旧 EF 代码

var pipeline = endpointConfiguration.Pipeline;
        pipeline.Register(new UnitOfWorkSetupBehavior(storageSession =>
        {
            var dbConnection = storageSession.SqlPersistenceSession().Connection;
            var context = ***new MyDataContext(dbConnection);***
            context.Database.UseTransaction(storageSession.SqlPersistenceSession().Transaction);
            storageSession.SqlPersistenceSession().OnSaveChanges(x => context.SaveChangesAsync());

            return context;
        }), "Setting up unit of work");

具有连接对象的构造函数的替代方法是什么,或者在 EF 核心 DBcontext 中真正改变了什么以不接受连接?

在 .Net 核心中, 依赖注入成为框架中的基石,所以,现在你不应该自己初始化 DBContext,你应该把它留给容器,默认情况下用“ 作用域提升时间”初始化它,因此在一个请求中,它会将相同的 DbContext 传递给您的服务,因此一次失败应该(如果您做得对,最后只调用一次保存更改)回滚所有更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM