/// <summary>
 /// Detecting the appropriate exception is messy, because there is not a proper
 /// exception type. We match on the message, which may be unreliable. If it fails,
 /// they will just get the raw EntityException, and have to figure it out from 
 /// there.
 /// </summary>
 public static bool Matches(EntityException e)
 {
     return e.Message == expectedMessageA
         && e.InnerException != null
         && e.InnerException is InvalidOperationException
         && e.InnerException.Message == expectedMessageB;
 }
 public ConflictingTransactionException(EntityException e)
     : base(message, e)
 {
 }