我在我的项目中使用MS Sync Framework 2.0。我使用MS SQL Server 2005作为主数据库,使用SQL CE 3.5作为客户端数据库。一切正常,但主数据库中的模式不会复制到本地数据库。
例如: 我有一个PK列的表,其中包含uniqueidentifier数据类型和NEWID()默认值。但是当要将模式下载到本地数据库时,将复制PK列,但默认值(NEWID())不会反映到本地数据库模式。
对此有何解决方案?是否有要求?
答案 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()";
}