2009-11-30 38 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()"; 
}