Skip to content

Commit

Permalink
fix PreRealCommitOnly
Browse files Browse the repository at this point in the history
  • Loading branch information
AlejandroCano committed Nov 11, 2013
1 parent 036fce3 commit fed7cd0
Showing 1 changed file with 31 additions and 31 deletions.
62 changes: 31 additions & 31 deletions Signum.Engine/Connection/Transaction.cs
Expand Up @@ -25,7 +25,7 @@ public class Transaction : IDisposable
static readonly Variable<Dictionary<Connector, ICoreTransaction>> currents = Statics.ThreadVariable<Dictionary<Connector, ICoreTransaction>>("transactions");

bool commited;
ICoreTransaction coreTransaction;
ICoreTransaction coreTransaction;

interface ICoreTransaction
{
Expand All @@ -34,7 +34,7 @@ interface ICoreTransaction
event Action<Dictionary<string, object>> PreRealCommit;
DbConnection Connection { get; }
DbTransaction Transaction { get; }

bool Started { get; }

bool IsRolledback { get; }
Expand All @@ -45,11 +45,11 @@ interface ICoreTransaction
void Finish();
void Start();

ICoreTransaction Parent { get; }
ICoreTransaction Parent { get; }

Dictionary<string, object> UserData { get; }
}

class FakedTransaction : ICoreTransaction
{
ICoreTransaction parent;
Expand All @@ -74,19 +74,19 @@ public FakedTransaction(ICoreTransaction parent)
remove { parent.PreRealCommit -= value; }
}

public DbConnection Connection{ get { return parent.Connection; } }
public DbTransaction Transaction{ get { return parent.Transaction; } }
public bool IsRolledback { get{ return parent.IsRolledback;} }
public DbConnection Connection { get { return parent.Connection; } }
public DbTransaction Transaction { get { return parent.Transaction; } }
public bool IsRolledback { get { return parent.IsRolledback; } }
public bool Started { get { return parent.Started; } }

public void Start() { parent.Start(); }

public void Rollback()
{
parent.Rollback();
parent.Rollback();
}

public void Commit(){ }
public void Commit() { }

public void Finish() { }

Expand Down Expand Up @@ -114,7 +114,7 @@ public ICoreTransaction Parent

class RealTransaction : ICoreTransaction
{
ICoreTransaction parent;
ICoreTransaction parent;

public DbConnection Connection { get; private set; }
public DbTransaction Transaction { get; private set; }
Expand All @@ -137,7 +137,7 @@ public void Start()
if (!Started)
{
Connection = Connector.Current.CreateConnection();

Connection.Open();
Transaction = Connection.BeginTransaction(IsolationLevel ?? Connector.Current.IsolationLevel);
Started = true;
Expand Down Expand Up @@ -206,7 +206,7 @@ public virtual void Finish()
Dictionary<string, object> userData;
public Dictionary<string, object> UserData
{
get { return userData ?? (userData = new Dictionary<string, object>()); }
get { return userData ?? (userData = new Dictionary<string, object>()); }
}

public ICoreTransaction Parent
Expand All @@ -230,7 +230,7 @@ class NamedTransaction : ICoreTransaction
public NamedTransaction(ICoreTransaction parent, string savePointName)
{
if (parent == null)
throw new InvalidOperationException("Named transactions should be nested inside another transaction");
throw new InvalidOperationException("Named transactions should be nested inside another transaction");

if (parent != null && parent.IsRolledback)
throw new InvalidOperationException("The transaction can not be created because a parent transaction is rolled back");
Expand All @@ -239,10 +239,10 @@ public NamedTransaction(ICoreTransaction parent, string savePointName)
this.savePointName = savePointName;
}


public DbConnection Connection { get { return parent.Connection; } }
public DbTransaction Transaction { get { return parent.Transaction; } }

public void Start()
{
if (!Started)
Expand All @@ -264,8 +264,8 @@ public void Rollback()
}
}

public void Commit()
{
public void Commit()
{
}

public void CallPostRealCommit()
Expand All @@ -290,15 +290,15 @@ public void CallPostRealCommit()
public ICoreTransaction Parent
{
get { return parent; }
}
}
}

class NoneTransaction : ICoreTransaction
{
ICoreTransaction parent;

public DbConnection Connection { get; private set; }
public DbTransaction Transaction { get{return null;}}
public DbTransaction Transaction { get { return null; } }
public bool IsRolledback { get; private set; }
public bool Started { get; private set; }
public event Action<Dictionary<string, object>> PostRealCommit;
Expand Down Expand Up @@ -395,7 +395,7 @@ public static bool InTestTransaction

static readonly Variable<bool> inTestTransaction = Statics.ThreadVariable<bool>("inTestTransaction");

class TestTransaction : RealTransaction
class TestTransaction : RealTransaction
{
bool oldTestTransaction;
public TestTransaction(ICoreTransaction parent, IsolationLevel? isolation)
Expand All @@ -405,7 +405,7 @@ public TestTransaction(ICoreTransaction parent, IsolationLevel? isolation)
inTestTransaction.Value = true;
}


public override void Finish()
{
inTestTransaction.Value = oldTestTransaction;
Expand Down Expand Up @@ -448,15 +448,15 @@ public static Transaction NamedSavePoint(string savePointName)

public static Transaction ForceNew()
{
return new Transaction(parent => inTestTransaction.Value ?
(ICoreTransaction)new FakedTransaction(parent) :
return new Transaction(parent => inTestTransaction.Value ?
(ICoreTransaction)new FakedTransaction(parent) :
(ICoreTransaction)new RealTransaction(parent, null));
}

public static Transaction ForceNew(IsolationLevel? isolationLevel)
{
return new Transaction(parent => inTestTransaction.Value ?
(ICoreTransaction)new FakedTransaction(parent) :
return new Transaction(parent => inTestTransaction.Value ?
(ICoreTransaction)new FakedTransaction(parent) :
(ICoreTransaction)new RealTransaction(parent, isolationLevel));
}

Expand All @@ -469,7 +469,7 @@ public static Transaction Test(IsolationLevel? isolationLevel)
{
return new Transaction(parent => new TestTransaction(parent, isolationLevel));
}

static ICoreTransaction GetCurrent()
{
return currents.Value.GetOrThrow(Connector.Current, "No Transaction created yet");
Expand Down Expand Up @@ -561,8 +561,8 @@ public void PreRealCommitOnly()

var rt = coreTransaction as RealTransaction;

if (rt != null)
throw new InvalidOperationException("This method is meant for testing purposes, and only Real and Test transactions can execute it");
if (rt == null)
throw new InvalidOperationException("This method is meant for testing purposes, and only Real and Test transactions can execute it");

rt.OnPreRealCommit();
}
Expand All @@ -571,16 +571,16 @@ public void Dispose()
{
try
{
if (!commited)
if (!commited)
coreTransaction.Rollback(); //... sqlTransacion.Rollback()

coreTransaction.Finish(); //... sqlTransaction.Dispose() sqlConnection.Dispose()
}
finally
{
if (coreTransaction.Parent == null)
currents.Value.Remove(Connector.Current);
else
currents.Value.Remove(Connector.Current);
else
currents.Value[Connector.Current] = coreTransaction.Parent;
}

Expand Down

0 comments on commit fed7cd0

Please sign in to comment.