2009-11-30 39 views
0

我在我的项目上使用MS Sync Framework 2.0。我使用MS SQL Server 2005作为主数据库和SQL CE 3.5用于客户端数据库。一切工作正常,但主数据库的模式不会复制到本地数据库。MS同步框架:表架构没有复制到本地数据库

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

任何解决方案?有需求吗?

回答

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()"; 
}