MS Sync Framework:表模式未复制到本地数据库

时间:2009-11-30 08:44:33

标签: synchronization

我在我的项目中使用MS Sync Framework 2.0。我使用MS SQL Server 2005作为主数据库,使用SQL CE 3.5作为客户端数据库。一切正常,但主数据库中的模式不会复制到本地数据库。

例如: 我有一个PK列的表,其中包含uniqueidentifier数据类型和NEWID()默认值。但是当要将模式下载到本地数据库时,将复制PK列,但默认值(NEWID())不会反映到本地数据库模式。

对此有何解决方案?是否有要求?

1 个答案:

答案 0 :(得分:1)

因此,目前的Microsoft Sync Framework(2.0)尚不支持此功能。我做的是我在SqlCeClientSyncProvider类上注册了CreatingSchema事件,并为每个正在创建的表循环,并在PKs中将默认值添加到NEWID()。

声明:

SqlCeClientSyncProvider clientProvider = new SqlCeClientSyncProvider(<connectionstring here>);

注册活动:

clientProvider.CreatingSchema += new EventHandler<Microsoft.Synchronization.Data.CreatingSchemaEventArgs>(clientProvider_CreatingSchema);

事件:

if (e.Table.SyncDirection == SyncDirection.Bidirectional)
{
    if (e.Schema.Tables[e.Table.TableName].Columns[0].DataType == typeof(Guid))
       e.Schema.Tables[e.Table.TableName].Columns[0].DefaultValue = "NEWID()";
}