是否可以一起使用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