我正在與實體框架偶爾連接的應用程序。我有一個在線數據庫(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)進行通信?可能嗎 ?我想我必須創建另一個上下文,但我沒有用它來手動創建它。
您可以通過給onlineDbContext構造(具有不同供應商和不同的存儲連接字符串)提供不同的連接字符串假定兩者具有相同的架構 – Andrew