2014-04-16 67 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

謝謝,我將檢查這些鏈接並獲得有關提供者的信息。 –

相關問題