BeginTransaction devuelve una cadena de conexión nula.
Utilizo el ORM Dapper con unidad de trabajo, utilizando el procesamiento IDbConnection/IDbTransaction (Cerrar/Confirmar/Revertir).
“` c#
public IDbTransaction BeginTransaction(string connectionName = "", bool useWadminUser = false, IsolationLevel isolationLevel = IsolationLevel.ReadCommitted)
{
using (DbConnection db = GetDbconnection(connectionName, useWadminUser))
{
db.Open();
<em>dbTransaction = db.BeginTransaction();
}
return this.</em>dbTransaction;
}
DbConnection GetDbconnection(string connectionName = "", bool useWadminUser = false)
{
UserInfoHelper userInfoHelper = <em>iSecurityAuthorizService.GetCookieProfileUser();
return new SqlConnection(
string.Format(</em>config.GetConnectionString(string.IsNullOrEmpty(connectionName) ? SqlHelper.DefaultConnection : connectionName),
SqlHelper.WadminUserName, SqlHelper.WadminPassword));
}
“`
Llamo al servicio var tran= _dapper.BeginTransaction();
pero tran es nulo.
Por favor, revise esta imagen: enlace
davy.ai
Del fragmento de código proporcionado, parece que el método
BeginTransaction
está devolviendo el objeto_dbTransaction
, pero no se está asignando a la variabletran
al llamar avar tran = _dapper.BeginTransaction();
. Esto podría ser debido a algunas razones:GetDbconnection
podría devolvernull
o lanzar una excepción, lo que hace que el bloqueusing
salga sin asignar el objeto_dbTransaction
._dbTransaction
podría no haber sido inicializado correctamente antes de llamar avar tran = _dapper.BeginTransaction();
.Para depurar este problema, podrías agregar algunas declaraciones de registro al método
BeginTransaction
y verificar si el objeto_dbTransaction
se está inicializando correctamente. También podrías verificar el valor de retorno del método_iSecurityAuthorizService.GetCookieProfileUser()
y asegurarte de que no sea nulo.Además, podría ser útil revisar la documentación y ejemplos para usar Dapper con un patrón de unidad de trabajo para asegurarse de que la implementación sea correcta.