我的产品已经使用ADO.Net来访问SQL Server,我使用Entity Framework Core来实现一些新功能。我遇到的问题是我有一些必须在单个事务中完成的操作,前几个操作是通过ADO.Net实现的,我需要使用Entity Framework添加额外的操作,所以我需要将事务传递给DBContext。
当我需要使用现有连接时,我可以这样做:
var dbc = new MyDBContext(optionsBuilder.UseSqlServer(connection).Options)
在传递事务而不是连接时,是否存在类似的内容? 我应该以完全不同的方式做这件事吗?
答案 0 :(得分:0)
您可以执行类似的操作以使用现有的SqlTransaction创建DbContext。这对我有用。我在同一事务上同时使用ADO.NET和EF进行CRUD操作。
//create connection and transaction do usual ADO.NET stuff
SqlTransaction transaction = ... // existing transaction
var existingConnection = transaction.Connection;
var contextOwnsConnection = false;
using (var db = new MyDbContext(existingConnection, contextOwnsConnection))
{
db.Database.UseTransaction(transaction);
//do something with db
}
// optionally do usual ADO.NET stuff ....
transaction.Commit();