首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DbConnection初始化EF核心DbContext连接

使用DbConnection初始化EF核心DbContext连接
EN

Stack Overflow用户
提问于 2020-02-09 22:33:16
回答 1查看 621关注 0票数 0

我正在将EF6 .net fwk应用程序迁移到实体框架核心3.0。然而,在我的旧EF6项目中,我可以选择使用DbConnection对象初始化DbContext,用于实现工作单元并使用相同的事务,而无需更改connection对象。

代码语言:javascript
复制
public MyDataContext(IDbConnection connection)
        : base((DbConnection) connection, false)
    {
    } 

然而,在EF内核中,我只有一个选择来初始化使用DbContextOptions的上下文,那就是接受一个连接字符串。这将初始化新的连接,而我将无法处理事务。

旧EF代码

代码语言:javascript
复制
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");

带connection对象的构造器有什么替代方法,或者EF核心DBcontext中有什么真正的变化,不使用connection?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-09 22:43:52

在.Net核心中,Dependency injection成为框架的基石,所以,现在你不应该自己初始化DbContext,而应该使用leave it to the container,它默认使用"scoped liftime“来初始化它,因此在整个请求过程中,它将传递相同的DBContext给你的服务,因此一个失败应该(如果你做得对,在最后只调用一次保存更改)回滚所有的更改。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60137699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档