msm*_*cic 7 c# entity-framework effort
当使用方法创建EntityFramework查询包装时DbContextTransaction,dbContext.Database.BeginTransaction()我遇到以下错误:
在NMemory.Linq.QueryableEx.Update的NMemory.Tnss.Table
2.Update(IQueryable1查询,IUpdater1 updater, Transaction transaction) at NMemory.Tables.Table2.NMemory.Tables.IBulkTable.Update(TableQuery1 query, Expression1更新程序,事务处理)中的NMemory.Transactions.Transaction.EnsureTransaction (事务和事务,IDatabase数据库)1 queryable, ExpressionEffort.Internal.Common.DatabaseReflectionHelper.WrapperMethods.UpdateEntities [TEntity]中的[T](IQueryable 1 updater,Transaction transaction)(IQueryable1 query, Expression1 updater,Transaction transaction)
我在Effort GitHub存储库上发现了一个类似错误的帖子(https://github.com/tamasflamich/effort/issues/29),其中使用方法DbTransaction创建了替代dbContext.Database.Connection.BeginTransaction()方法.我尝试使用DbTransaction而且它有效,但现在我想知道这两者之间的区别是什么?
小智 0
如果我们查看DbTransaction和DbContextTransaction的文档,我们会得到:
数据库事务:
数据库上下文事务:
我在这里找到了另一个解释:https ://github.com/dotnet/efcore/issues/24074
在数据库上开始事务是一个 EF Core API,它将在内部调用相应的较低级别的 ADO.NET DbConnection API。建议使用 DbContextTransaction,这样 EF Core 就能正确意识到事务已启动 - 这可能很重要,具体取决于您使用 DbContext 的具体方式。
| 归档时间: |
|
| 查看次数: |
1344 次 |
| 最近记录: |