如何在一次交易中获得Asp.Net身份和EF数据库优先上下文?

时间:2018-09-13 21:27:14

标签: c# asp.net entity-framework transactions asp.net-identity-2

我正在使用具有ASP.NET标识的Entity Framework-First。在我的web.config文件中,有以下两个连接字符串:

<connectionStrings>
  <add name="DBConnection" connectionString="metadata=res://*/Catalog.CatalogsModel.csdl|res://*/Catalog.CatalogsModel.ssdl|res://*/Catalog.CatalogsModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(local);initial catalog=MyDatabase;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  <add name="DBAuthConnection" connectionString="Data Source=(local);Initial Catalog=MyDatabase;Integrated Security=True;" providerName="System.Data.SqlClient" />
</connectionStrings>

我需要两个连接字符串,因为其中一个不能与EF一起使用,另一个不能与ASP.NET Identity一起使用。

现在,我需要创建一个事务,以便我可以注册用户,然后(通过一次事务)将一些其他数据保存到我的EF表中。

这是我尝试过的:

var authContext = HttpContext.GetOwinContext().Get<ApplicationDbContext>();
using (var transaction = authContext.Database.BeginTransaction())
{
    var result = await UserManager.CreateAsync(aspNetUser, model.Password);
    if (result.Succeeded)
    {
        try
        {
            using (var dbContext = new AtlantiaDBCatalogEntities())
            {
                dbContext.Database.UseTransaction(transaction.UnderlyingTransaction);
                ...
            }
        }
    }
}

但是,出现以下错误:

  

传入的事务与当前事务不相关   连接。仅与当前连接关联的交易   可以使用。

当它们不能具有相同的连接字符串时,如何确保两个上下文共享相同的连接?

0 个答案:

没有答案