Я использую Entity Framework Database-First с удостоверением ASP.NET. В моем файле 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="data source=(local);initial catalog=MyDatabase;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" 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);
...
}
}
}
}
Но я получаю следующую ошибку:
Переданная транзакция не связана с текущей
подключение. Только транзакции, связанные с текущим соединением
можно использовать.
Как мне убедиться, что два контекста используют одно и то же соединение, если они не могут иметь одинаковые строки соединения?