SqlCeClientSyncProvider 類別
抽取與用戶端通訊並讓同步處理代理程式避開用戶端資料庫之特定實作的 SQL Server Compact 用戶端同步處理提供者。
命名空間: Microsoft.Synchronization.Data.SqlServerCe
組件: Microsoft.Synchronization.Data.SqlServerCe (在 microsoft.synchronization.data.sqlserverce.dll)
語法
'宣告
<SuppressMessageAttribute("Microsoft.Maintainability", "CA1506:AvoidExcessiveClassCoupling")> _
<SuppressMessageAttribute("Microsoft.Naming", "CA1706:ShortAcronymsShouldBeUppercase")> _
Public Class SqlCeClientSyncProvider
Inherits ClientSyncProvider
'用途
Dim instance As SqlCeClientSyncProvider
[SuppressMessageAttribute("Microsoft.Maintainability", "CA1506:AvoidExcessiveClassCoupling")]
[SuppressMessageAttribute("Microsoft.Naming", "CA1706:ShortAcronymsShouldBeUppercase")]
public class SqlCeClientSyncProvider : ClientSyncProvider
[SuppressMessageAttribute(L"Microsoft.Maintainability", L"CA1506:AvoidExcessiveClassCoupling")]
[SuppressMessageAttribute(L"Microsoft.Naming", L"CA1706:ShortAcronymsShouldBeUppercase")]
public ref class SqlCeClientSyncProvider : public ClientSyncProvider
/** @attribute SuppressMessageAttribute("Microsoft.Maintainability", "CA1506:AvoidExcessiveClassCoupling") */
/** @attribute SuppressMessageAttribute("Microsoft.Naming", "CA1706:ShortAcronymsShouldBeUppercase") */
public class SqlCeClientSyncProvider extends ClientSyncProvider
SuppressMessageAttribute("Microsoft.Maintainability", "CA1506:AvoidExcessiveClassCoupling")
SuppressMessageAttribute("Microsoft.Naming", "CA1706:ShortAcronymsShouldBeUppercase")
public class SqlCeClientSyncProvider extends ClientSyncProvider
備註
用戶端同步處理提供者的主要活動如下:
儲存有關在啟用同步處理的用戶端中資料表的資訊。
擷取自從最後一次同步處理後發生在用戶端資料庫上的變更。
套用累加變更至用戶端資料庫。
偵測衝突變更。
範例
下列程式碼範例會建立衍生自 SqlCeClientSyncProvider 的類別。此類別會建立與用戶端資料庫的連接,並處理幾個常見的事件,包括用戶端資料庫中的結構描述建立。若要在完整範例的內容中檢視這段程式碼,請參閱 HOW TO:使用事件和程式商務邏輯。
public class SampleClientSyncProvider : SqlCeClientSyncProvider
{
public SampleClientSyncProvider()
{
//Specify a connection string for the sample client database.
Utility util = new Utility();
this.ConnectionString = Utility.ConnStr_SqlCeClientSync;
//Log information for the following events.
this.SchemaCreated += new EventHandler<SchemaCreatedEventArgs>(EventLogger.LogEvents);
this.ChangesSelected += new EventHandler<ChangesSelectedEventArgs>(EventLogger.LogEvents);
this.ChangesApplied += new EventHandler<ChangesAppliedEventArgs>(EventLogger.LogEvents);
this.ApplyChangeFailed += new EventHandler<ApplyChangeFailedEventArgs>(EventLogger.LogEvents);
//Use the following events to fix up schema on the client.
//We use the CreatingSchema event to change the schema
//by using the API. We use the SchemaCreated event
//to change the schema by using SQL.
//Note that both schema events fire for the Customer table,
//even though we already created the table. This allows us
//to work with the table at this point if we have to.
this.CreatingSchema += new EventHandler<CreatingSchemaEventArgs>(SampleClientSyncProvider_CreatingSchema);
this.SchemaCreated += new EventHandler<SchemaCreatedEventArgs>(SampleClientSyncProvider_SchemaCreated);
}
private void SampleClientSyncProvider_CreatingSchema(object sender, CreatingSchemaEventArgs e)
{
string tableName = e.Table.TableName;
if (tableName == "Customer")
{
//Set the RowGuid property because it is not copied
//to the client by default. This is also a good time
//to specify literal defaults with .Columns[ColName].DefaultValue,
//but we will specify defaults like NEWID() by calling
//ALTER TABLE after the table is created.
e.Schema.Tables["Customer"].Columns["CustomerId"].RowGuid = true;
}
if (tableName == "OrderHeader")
{
e.Schema.Tables["OrderHeader"].Columns["OrderId"].RowGuid = true;
}
}
private void SampleClientSyncProvider_SchemaCreated(object sender, SchemaCreatedEventArgs e)
{
string tableName = e.Table.TableName;
Utility util = new Utility();
//Call ALTER TABLE on the client. This must be done
//over the same connection and within the same
//transaction that Sync Framework uses
//to create the schema on the client.
if (tableName == "Customer")
{
Utility.MakeSchemaChangesOnClient(e.Connection, e.Transaction, "Customer");
}
if (tableName == "OrderHeader")
{
Utility.MakeSchemaChangesOnClient(e.Connection, e.Transaction, "OrderHeader");
}
if (tableName == "OrderDetail")
{
Utility.MakeSchemaChangesOnClient(e.Connection, e.Transaction, "OrderDetail");
}
}
}
Public Class SampleClientSyncProvider
Inherits SqlCeClientSyncProvider
Public Sub New()
'Specify a connection string for the sample client database.
Dim util As New Utility()
Me.ConnectionString = Utility.ConnStr_SqlCeClientSync
'Log information for the following events.
AddHandler Me.SchemaCreated, AddressOf EventLogger.LogEvents
AddHandler Me.ChangesSelected, AddressOf EventLogger.LogEvents
AddHandler Me.ChangesApplied, AddressOf EventLogger.LogEvents
AddHandler Me.ApplyChangeFailed, AddressOf EventLogger.LogEvents
'Use the following events to fix up schema on the client.
'We use the CreatingSchema event to change the schema
'by using the API. We use the SchemaCreated event
'to change the schema by using SQL.
'Note that both schema events fire for the Customer table,
'even though we already created the table. This allows us
'to work with the table at this point if we have to.
AddHandler Me.CreatingSchema, AddressOf SampleClientSyncProvider_CreatingSchema
AddHandler Me.SchemaCreated, AddressOf SampleClientSyncProvider_SchemaCreated
End Sub 'New
Private Sub SampleClientSyncProvider_CreatingSchema(ByVal sender As Object, ByVal e As CreatingSchemaEventArgs)
Dim tableName As String = e.Table.TableName
If tableName = "Customer" Then
'Set the RowGuid property because it is not copied
'to the client by default. This is also a good time
'to specify literal defaults with .Columns[ColName].DefaultValue,
'but we will specify defaults like NEWID() by calling
'ALTER TABLE after the table is created.
e.Schema.Tables("Customer").Columns("CustomerId").RowGuid = True
End If
If tableName = "OrderHeader" Then
e.Schema.Tables("OrderHeader").Columns("OrderId").RowGuid = True
End If
End Sub 'SampleClientSyncProvider_CreatingSchema
Private Sub SampleClientSyncProvider_SchemaCreated(ByVal sender As Object, ByVal e As SchemaCreatedEventArgs)
Dim tableName As String = e.Table.TableName
Dim util As New Utility()
'Call ALTER TABLE on the client. This must be done
'over the same connection and within the same
'transaction that Sync Framework uses
'to create the schema on the client.
If tableName = "Customer" Then
Utility.MakeSchemaChangesOnClient(e.Connection, e.Transaction, "Customer")
End If
If tableName = "OrderHeader" Then
Utility.MakeSchemaChangesOnClient(e.Connection, e.Transaction, "OrderHeader")
End If
If tableName = "OrderDetail" Then
Utility.MakeSchemaChangesOnClient(e.Connection, e.Transaction, "OrderDetail")
End If
End Sub 'SampleClientSyncProvider_SchemaCreated
End Class 'SampleClientSyncProvider
繼承階層
System.Object
Microsoft.Synchronization.SyncProvider
Microsoft.Synchronization.Data.ClientSyncProvider
Microsoft.Synchronization.Data.SqlServerCe.SqlCeClientSyncProvider
執行緒安全性
任何公用靜態 (共用 在 Visual Basic) 此型別的成員具備執行緒安全。不保證任何執行個體成員安全執行緒。
請參閱
參考
SqlCeClientSyncProvider 成員
Microsoft.Synchronization.Data.SqlServerCe 命名空間