是否可以一起使用CF EF4.1,SQL Server Compact 4和Microsoft Sync Framework?代碼優先EF4.1 + SQL Server CE4 +同步框架
隨着我,MS同步框架需要的SQL Server Compact 3.5,但EF4.1使用的SQL Server Compact 4 ...
UPDATE 好吧,我看到它不可能使用同步MSSQL CE4微軟同步框架。 那麼是否可以使用mssql ce3.5作爲實體框架4.1的存儲?
是否可以一起使用CF EF4.1,SQL Server Compact 4和Microsoft Sync Framework?代碼優先EF4.1 + SQL Server CE4 +同步框架
隨着我,MS同步框架需要的SQL Server Compact 3.5,但EF4.1使用的SQL Server Compact 4 ...
UPDATE 好吧,我看到它不可能使用同步MSSQL CE4微軟同步框架。 那麼是否可以使用mssql ce3.5作爲實體框架4.1的存儲?
Sync Framework直接針對使用其提供程序的數據庫工作,並且直接通過EF不支持開箱即用。與SQL精簡4也是如此(見Scenarios not enabled by Sql Compact 4
將無法正常工作 - 看到適用於SQL Server CE 4現在this page with limitations:
Data replication with SQL Server: Compact 4.0 does not support data replication with SQL Server using Sync Framework, merge replication or remote data access (RDA).
但是有可能使ef4.1代碼優先使用mssql ce 3.5?由於Sync Framework在mssql ce3.5中可以正常工作 – DolceVita 2011-04-26 12:59:21
據this post,SQL Server精簡版3.5不能與使用實體框架4.1代碼第一個提供者,它可以與EF 4.1 Model First或Database First一起使用
SQL CE 3.5不能與Code First方法一起工作(提供者不支持DDL生成);但它應該可以工作只需使用EF 4.1的Model First或Database First方法即可。
是的,這可能是 - 如果您不依賴創建或遷移功能(EF 5.0)。
所以,首先配置EF使用SQL CE提供商使用的app.config和命名的配置使用數據之前
<connectionStrings>
<add name="TestDatabase"
providerName="System.Data.SqlServerCe.3.5"
connectionString="Data Source=test.sdf"/>
</connectionStrings>
和
public class TestDbDataContext : DbContext
{
public TestDbDataContext() : base("TestDatabase") { }
}
禁用創建和遷移功能背景
Database.SetInitializer<TestDbDataContext>(null);
現在您可以訪問數據庫。顯然,你將不得不手動創建表格。
警告:
插入服務器生成的密鑰不與CE 3.5的工作。所以你必須在客戶端管理它們(最好使用GUID來防止關鍵衝突)。此外,即使您打算自己管理鑰匙,也需要小心。定義這樣的密鑰
[Key]
Guid Id { get; set; }
將導致EF認爲密鑰是在服務器端生成的。因此,你需要定義使用EF的流暢API設置DatabaseGeneratedOption
爲無關鍵屬性:
this.Property(p => p.ProductId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None)
.IsRequired();
this.HasKey(p => p.ProductId);
這可以在配置類中或者完成(如樣品中),或在數據CONTEX的OnModelCreating
功能。
想法是使用EF 4.1和MSSQL Compact並使用同步框架將數據庫複製到服務器數據庫(例如mssql 2008r2)。那麼我切換EF4。1與mssql compact 3.5的連接出現錯誤:無法確定類型爲「System.Data.SqlServerCe.SqlCeConnection」的連接的提供程序名稱。 – DolceVita 2011-04-26 12:14:04