title: ApplyChangeFailed does not fired on conflict
body: <p>I'm trying to sync two SQL Server DBs by following Microsoft example from here <a href="http://msdn.microsoft.com/en-us/library/ff928700.aspx" rel="nofollow noreferrer">Synchronizing SQL Server and SQL Express</a> and the basic sync is working for me.
  Now, I tried to create a conflict by changing the same row on both DB to different values but when I run my sync process the ApplyChangeFailed is not fired.</p>
  
  <p>I read this question <a href="https://stackoverflow.com/questions/17279150/microsoft-sync-framework-conflict-event-does-not-fire">Microsoft Sync Framework Conflict Event does not fire</a> but I don't understand why when I sync client&lt;->server configuration the framework ignore conflicts.</p>
  
  <p>Here is my code, just for reference, I have a remote SQL 2008 R2 Server as the server and a local SQL 2012 Express as the client:</p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  using System.Data.SqlClient;
  using Microsoft.Synchronization;
  using Microsoft.Synchronization.Data;
  using Microsoft.Synchronization.Data.SqlServer;
  using Microsoft.Synchronization.Data.SqlServerCe;
  
  namespace ExecuteExpressSync
  {
      class Program
      {
          static void Main(string[] args)
          {
              SqlConnection clientConn = new SqlConnection(@"Data Source=.\SQLEXPRESS; Initial Catalog=SyncExpressDB; Trusted_Connection=Yes");
              SqlConnection serverConn = new SqlConnection("Data Source=X.Y.Z.W; Initial Catalog=SyncDB; uid=sa;password=******;Integrated Security=False");
  
              // create the sync orhcestrator
              SyncOrchestrator syncOrchestrator = new SyncOrchestrator();
  
              // set local provider of orchestrator to a sync provider associated with the 
              // ProductsScope in the SyncExpressDB express client database
              syncOrchestrator.LocalProvider = new SqlSyncProvider("ProductsScope", clientConn);
  
              // set the remote provider of orchestrator to a server sync provider associated with
              // the ProductsScope in the SyncDB server database
              syncOrchestrator.RemoteProvider = new SqlSyncProvider("ProductsScope", serverConn);
  
              // set the direction of sync session to Upload and Download
              syncOrchestrator.Direction = SyncDirectionOrder.UploadAndDownload;
  
              // subscribe for errors that occur when applying changes to the client
              ((SqlSyncProvider)syncOrchestrator.LocalProvider).ApplyChangeFailed += new EventHandler&lt;DbApplyChangeFailedEventArgs&gt;(Program_ApplyChangeFailed);
  
              // execute the synchronization process
              SyncOperationStatistics syncStats = syncOrchestrator.Synchronize();
  
              // print statistics
              Console.WriteLine("Start Time: " + syncStats.SyncStartTime);
              Console.WriteLine("Total Changes Uploaded: " + syncStats.UploadChangesTotal);
              Console.WriteLine("Total Changes Downloaded: " + syncStats.DownloadChangesTotal);
              Console.WriteLine("Complete Time: " + syncStats.SyncEndTime);
              Console.WriteLine(String.Empty);
          }
  
          static void Program_ApplyChangeFailed(object sender, DbApplyChangeFailedEventArgs e)
          {
              // display conflict type
              Console.WriteLine(e.Conflict.Type);
  
              // display error message 
              Console.WriteLine(e.Error);
          }
      }
  }
  </code></pre>