C# 如何使用Microsoft sync Framework与筛选器数据同步

C# 如何使用Microsoft sync Framework与筛选器数据同步,c#,sql,sql-server,synchronization,microsoft-sync-framework,C#,Sql,Sql Server,Synchronization,Microsoft Sync Framework,我正在使用sql server 2008和c编写Microsoft同步框架,下面是我的代码 public static void SetUp(string _pScopeName, DbSyncTableDescription _pDbSyncTable, SqlConnection serverConn, SqlConnection clientConn) { // Create a scope named "_ITEM" and add tables

我正在使用sql server 2008和c编写Microsoft同步框架,下面是我的代码

public static void SetUp(string _pScopeName, DbSyncTableDescription _pDbSyncTable, SqlConnection serverConn, SqlConnection clientConn)
        {
            // Create a scope named "_ITEM" and add tables to it.
            DbSyncScopeDescription productScope = new DbSyncScopeDescription(_pScopeName);

            // Define the Products table.
            // Add the Table to the scope object.    
            productScope.Tables.Add(_pDbSyncTable);
            // Create a provisioning object for "_ITEM" and apply it to the on-premise database if one does not exist.
            SqlSyncScopeProvisioning serverProvision = new SqlSyncScopeProvisioning(serverConn, productScope);
            serverProvision.ObjectSchema = ".dbo";
            string _tblName = _pDbSyncTable.LocalName.Replace("[", "").Replace("]", "");
            serverProvision.SetCreateTableDefault(DbSyncCreationOption.Skip);
            serverProvision.Tables[_tblName].AddFilterColumn("_WORKGROUPNAME");
            serverProvision.Tables[_pDbSyncTable.LocalName].FilterClause = "[" + _tblName + "].[_WORKGROUPNAME] = " + _CCompanyVar._WORKGROUPNAME;
            //Skip create Sync Framework objects because we have already created them on the previous step
                serverProvision.SetCreateTableDefault(DbSyncCreationOption.Skip);

                //Create new select changes procedure for our scope
serverProvision.SetCreateProceduresForAdditionalScopeDefault(DbSyncCreationOption.Create);
                if (_CPubVar._Stop_bool)
                {
                    return;
                }
            if (!serverProvision.ScopeExists(_pScopeName))
                serverProvision.Apply();

            // Provision the SQL client database from the on-premise SQL Server database if one does not exist.
            SqlSyncScopeProvisioning clientProvision = new SqlSyncScopeProvisioning(clientConn, productScope);

            if (_CPubVar._Stop_bool)
            {
                return;
            }
            if (!clientProvision.ScopeExists(_pScopeName))
                clientProvision.Apply();    
        }
我得到一个错误:

The multi-part identifier "_ATTENDANCESTATUS._WORKGROUPNAME" could not be bound.
Invalid column name 'FPR'.
第行:

serverProvision.Apply();
如果我删除下面的行,我的同步过程在没有筛选器的情况下可以正常工作

string _tblName = _pDbSyncTable.LocalName.Replace("[", "").Replace("]", "");
            serverProvision.SetCreateTableDefault(DbSyncCreationOption.Skip);
            serverProvision.Tables[_tblName].AddFilterColumn("_WORKGROUPNAME");
            serverProvision.Tables[_pDbSyncTable.LocalName].FilterClause = "[" + _tblName + "].[_WORKGROUPNAME] = " + _CCompanyVar._WORKGROUPNAME;
            //Skip create Sync Framework objects because we have already created them on the previous step
            serverProvision.SetCreateTableDefault(DbSyncCreationOption.Skip);
            //Create new select changes procedure for our scope
            serverProvision.SetCreateProceduresForAdditionalScopeDefault(DbSyncCreationOption.Create);
\u WORKGROUPNAME
是我的所有表中的一个公共字段,我想筛选
\u WORKGROUPNAME
上的数据,我将该数据传递到\u CCompanyVar.\u WORKGROUPNAME(字符串变量)

如果我错了,请指出…

使用此

public static void SetUp(string _pScopeName, DbSyncTableDescription _pDbSyncTable, SqlConnection serverConn, SqlConnection clientConn)
        {
            // Create a scope named "_ITEM" and add tables to it.
            DbSyncScopeDescription productScope = new DbSyncScopeDescription(_pScopeName);

            // Define the Products table.
            // Add the Table to the scope object.    
            Collection<string> includeColumns = new Collection<string>();
            for (int i = 0; i < _pDbSyncTable.Columns.Count; i++)
            {
                includeColumns.Add(_pDbSyncTable.Columns[i].UnquotedName);
            }
            DbSyncTableDescription productDescription = SqlSyncDescriptionBuilder.GetDescriptionForTable(_pScopeName, includeColumns, serverConn);
            productScope.Tables.Add(productDescription);

            // Create a provisioning object for "_ITEM" and apply it to the on-premise database if one does not exist.
            SqlSyncScopeProvisioning serverProvision = new SqlSyncScopeProvisioning(serverConn, productScope);
            serverProvision.ObjectSchema = ".dbo";                
            // Filter Rows for the ListPrice column
            serverProvision.Tables[ _pDbSyncTable.LocalName].AddFilterColumn("_WORKGROUPNAME");
            serverProvision.Tables[ _pDbSyncTable.LocalName].FilterClause = "[side].[_WORKGROUPNAME] = '" + _CCompanyVar._WORKGROUPNAME + "'";

            if (_CPubVar._Stop_bool)
            {
                return;
            }
            if (!serverProvision.ScopeExists(_pScopeName))
                serverProvision.Apply();

            // Provision the SQL client database from the on-premise SQL Server database if one does not exist.
            SqlSyncScopeProvisioning clientProvision = new SqlSyncScopeProvisioning(clientConn, productScope);

            if (_CPubVar._Stop_bool)
            {
                return;
            }
            if (!clientProvision.ScopeExists(_pScopeName))
                clientProvision.Apply();

        }
publicstaticvoid设置(字符串_pScopeName,DbSyncTableDescription _pDbSyncTable,sqlconnectionserverconn,sqlconnectionclientconn)
{
//创建一个名为“_ITEM”的范围并向其中添加表。
dbsyncopedescription productScope=新的dbsyncopedescription(_pScopeName);
//定义产品表。
//将表添加到范围对象。
集合includeColumns=新集合();
对于(int i=0;i<\u pDbSyncTable.Columns.Count;i++)
{
includeColumns.Add(_pDbSyncTable.Columns[i].UnquotedName);
}
DbSyncTableDescription productDescription=SqlSyncDescriptionBuilder.GetDescriptionForTable(_pScopeName,includeColumns,serverConn);
productScope.Tables.Add(productDescription);
//为“_ITEM”创建一个配置对象,如果不存在,则将其应用于本地数据库。
SqlSyncScopeProvisioning ServerProvisioning=新的SqlSyncScopeProvisioning(serverConn,productScope);
serverProvision.ObjectSchema=“.dbo”;
//筛选ListPrice列的行
serverProvision.Tables[\u pDbSyncTable.LocalName].AddFilterColumn(“\u WORKGROUPNAME”);
serverProvision.Tables[\u pDbSyncTable.LocalName].FilterClause=“[side]。[u WORKGROUPNAME]=”+\u CCompanyVar.\u WORKGROUPNAME+”;
如果(\u CPubVar.\u Stop\u bool)
{
返回;
}
如果(!serverProvision.ScopeExists(_pScopeName))
serverProvision.Apply();
//如果本地SQL Server数据库不存在,请从该数据库中设置SQL客户端数据库。
SqlSyncScopeProvisioning ClientProvisioning=新的SqlSyncScopeProvisioning(clientConn,productScope);
如果(\u CPubVar.\u Stop\u bool)
{
返回;
}
如果(!clientProvision.ScopeExists(_pScopeName))
clientProvision.Apply();
}