【发布时间】:2014-04-16 08:33:37
【问题描述】:
我正在使用 Entity Framework 开发一个偶尔连接的应用程序。我有一个在线数据库(SQL Server)和一个本地数据库(SQL Server compact 3.5)。我正在使用 Microsoft Sync Framework 将我的一些表从在线数据库同步到离线数据库。我对每个数据库进行了配置。我想做的是使用我从对本地数据库的在线数据库进行的逆向工程中获得的 same 模型。
我将做一个简单的例子来说明我在哪里。这不是我正在处理的数据库。这只是一个例子。
我的在线数据库包含一个表产品。我想偶尔将该数据库与 本地 数据库同步。为此,我使用 Microsoft Sync Framework。没问题,我可以让它工作。所以现在,我的两个数据库包含 same Product 表(加上一些同步表...)。
在我的 WPF 项目中,我使用 在线数据库 上的逆向工程 来获取模型。所以在我的项目中,我现在有了 Product 类和 onlineDB 上下文。
public partial class Product
{
public int id { get; set; }
public string name { get; set; }
}
public class ProductMap : EntityTypeConfiguration<Product>
{
public ProductMap()
{
// Primary Key
this.HasKey(t => t.id);
// Properties
this.Property(t => t.id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
this.Property(t => t.name)
.IsFixedLength()
.HasMaxLength(10);
// Table & Column Mappings
this.ToTable("Products");
this.Property(t => t.id).HasColumnName("id");
this.Property(t => t.name).HasColumnName("name");
}
}
public partial class onlineDBContext : DbContext
{
static onlineDBContext()
{
Database.SetInitializer<onlineDBContext>(null);
}
public onlineDBContext()
: base("Name=onlineDBContext")
{
}
public DbSet<Product> Products { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new ProductMap());
}
}
有了这个,我可以正确地更新、删除、插入...数据到我的onlineDatabase。没问题。
如何使用 same Product 类与我的本地数据库(SQL Server Compact 3.5)进行通信?是否可以 ?我想我必须创建另一个上下文,但我不习惯手动创建它。
【问题讨论】:
-
假设两者具有相同的架构,您可以通过向 onlineDbContext 构造函数提供不同的连接字符串(使用不同的提供者和不同的存储连接字符串)来连接到本地数据库
标签: c# sql sql-server database entity-framework