Click here to Skip to main content
15,867,834 members
Please Sign up or sign in to vote.
4.00/5 (1 vote)
See more: , +
I have implemented synchronize between SQL server 2008 and SQL Compact database with two way.

It is perfectly working with insert and update data in database and synced very well.

But if I try to delete a record from one database like sql server after that i synced with sql compact it is come back again.

I want that if I delete record from one database it is necessary to delete from other database.

I don't know why it is come back again please help me.

My source code given here.

C#
string serverCon = "Data Source=192.168.0.2\\sqlserver2008r2;Initial Catalog=test;Integrated Security=false;UID=sa;PWD=ifour@1234;";
        const string localCon = "Data Source=|DataDirectory|\\DB\\test.sdf;Persist Security Info=False;";


        var serverConn = new SqlConnection(serverCon);
        var clientSqlConn = new SqlCeConnection(localCon);



        DbSyncScopeDescription scopeDesc = new DbSyncScopeDescription("filter");

        DbSyncTableDescription customerDescription =
           SqlSyncDescriptionBuilder.GetDescriptionForTable("Demo", serverConn);
        scopeDesc.Tables.Add(customerDescription);

        SqlSyncScopeDeprovisioning serverSqlDepro = new SqlSyncScopeDeprovisioning(serverConn);
        SqlSyncScopeProvisioning serverTemplate = new SqlSyncScopeProvisioning(serverConn, scopeDesc, SqlSyncScopeProvisioningType.Template);
        serverTemplate.ObjectSchema = "dbo";

        serverTemplate.Tables["Demo"].AddFilterColumn("bit");
        serverTemplate.Tables["Demo"].FilterClause = "[side].[bit] = @customertype";
        SqlParameter param = new SqlParameter("@customertype", SqlDbType.Bit, 1);
        serverTemplate.Tables["Demo"].FilterParameters.Add(param);

        if (serverTemplate.TemplateExists("filter"))
        {
            serverSqlDepro.DeprovisionTemplate("filter");
        }

        serverTemplate.Apply();


        SqlSyncScopeProvisioning serverProvRetail = new SqlSyncScopeProvisioning(serverConn);
        serverProvRetail.ObjectSchema = "dbo";
        serverProvRetail.PopulateFromTemplate("RetailCustomers", "filter");
        serverProvRetail.Tables["Demo"].FilterParameters["@customertype"].Value = false;


        if (serverProvRetail.ScopeExists("filter"))
        {
            serverSqlDepro.DeprovisionScope("filter");
        }
        //serverProvRetail.PopulateFromScopeDescription(scopeDesc);
        serverProvRetail.Apply();
        serverProvRetail.PopulateFromScopeDescription(scopeDesc);
        SqlCeSyncScopeDeprovisioning clientSqlCeDepro = new SqlCeSyncScopeDeprovisioning(clientSqlConn);
        var clientSqlDesc = SqlSyncDescriptionBuilder.GetDescriptionForScope("RetailCustomers", null, "dbo", serverConn);
        var clientSqlConfig = new SqlCeSyncScopeProvisioning(clientSqlConn, clientSqlDesc);

        if (clientSqlConfig.ScopeExists("RetailCustomers"))
        {
            clientSqlCeDepro.DeprovisionScope("RetailCustomers");
        }

        clientSqlConfig.Apply();

        SampleSyncOrchestrator syncOrchestrator;
        SyncOperationStatistics syncStats;

        // Data is downloaded from the server to the SQL Server client.
        syncOrchestrator = new SampleSyncOrchestrator(
            new SqlCeSyncProvider("RetailCustomers", clientSqlConn, null),
            new SqlSyncProvider("RetailCustomers", serverConn, null, "dbo")
            );
        syncStats = syncOrchestrator.Synchronize();
    }

public class SampleSyncOrchestrator : SyncOrchestrator
{
        public  SampleSyncOrchestrator(RelationalSyncProvider localProvider, RelationalSyncProvider remoteProvider)
        {

        this.LocalProvider = localProvider;
        this.RemoteProvider = remoteProvider;
        this.Direction = SyncDirectionOrder.DownloadAndUpload;
        }
}
Posted
Comments
Member 8626064 10-Feb-15 15:00pm    
Have you found some solution to this issue?
Dharmesh Parekh 12-Jun-15 1:01am    
not yet!
Paudel.Prakash.Chandra 23-Aug-16 2:25am    
did you find the solution? Mine, once deleted manually from server db refreshes the local db as well but local dbs are not loaded with data inserted in server db after deletion.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900