我正在与实体框架偶尔连接的应用程序。我有一个在线数据库(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