2014-04-16 33 views
0

我正在与实体框架偶尔连接的应用程序。我有一个在线数据库(SQL服务器)和本地数据库(的SQL Server Compact 3.5)。我正在使用Microsoft Sync Framework将我的一些表从联机数据库同步到脱机数据库。我在每个数据库上进行了配置。我想要做的就是使用相同模型,我从逆向工程我在我的本地数据库联机数据库没有得到。是否有可能在一个项目中有两个数据库的实体模型?

我会做一个简单的例子来说明我在哪里。这不是我正在处理的数据库。这只是一个例子。

我的在线数据库中包含一个表产品。我想偶尔将该数据库与本地数据库同步。为此,我使用Microsoft Sync Framework。没问题,我可以让它工作。所以,现在,我有一个包含相同产品表(加上一些同步的表...)我的两个数据库。

在我的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。没问题。

我如何使用相同产品类与本地数据库(SQL Server精简3.5)进行通信?可能吗 ?我想我必须创建另一个上下文,但我没有用它来手动创建它。

+1

您可以通过给onlineDbContext构造(具有不同供应商和不同的存储连接字符串)提供不同的连接字符串假定两者具有相同的架构 – Andrew

回答

1

正如您在代码中看到的那样,DbContext的构造函数正在将nameOfConnectionString传递给基类。在你的情况下,这个字符串是onlineDBContext,这意味着你的.config文件中有一个连接字符串的名字。 您可以更改连接字符串以连接到不同的来源。详细了解如何做到这一点herehere

+0

是不是我的意见的副本连接到你的本地数据库? – Andrew

+0

谢谢,我将检查这些链接并获得有关提供者的信息。 –

相关问题