为什么我的项目连接到不同的数据源?
我有两个解决方案,使用EF 6.0和两个使用完全相同的默认配置。不过,他们连接到2个不同的数据源!? (localdb)\ mssqllocaldb和。\ SQLEXPRESS。为什么我的项目连接到不同的数据源?
我的配置:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
的的DbContext也是既相似:
public class PlusUltraContext : DbContext
{
public PlusUltraContext() : base("PlusUltra")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}
public DbSet<Models.Article> Articles { get; set; }
public DbSet<Models.ArticleComment> Comments { get; set; }
}
VS
public class InvoicingContext : DbContext
{
public DbSet<Address> Addresses { get; set; }
public DbSet<Company> Companies { get; set; }
public DbSet<Country> Countries { get; set; }
public DbSet<Currency> Currencies { get; set; }
public DbSet<Invoice> Invoices { get; set; }
public DbSet<InvoiceLine> InvoiceLines { get; set; }
public DbSet<Person> Persons { get; set; }
public DbSet<Unit> Units { get; set; }
public InvoicingContext() : base("Invoicing")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}
}
然而,当我运行Update-数据库命令,第一个项目连接到\ SQLEXPRESS,而其他所连接到(的LocalDB)\ mssqllocaldb
目标数据库是: 'PlusUltra'(数据源:(的LocalDB)\ mssqllocaldb,提供者:System.Data.SqlClient的,起源:公约)。
VS
目标数据库是: '发票'(数据源:\ SQLEXPRESS,提供者:System.Data.SqlClient的,产地:公约)。
我的问题
什么是有些事情我可以检查看看他们为什么不同的表现?
我找到了答案,多亏了这个帖子:
EF6 can't find LocalDBConnectionFactory
在解决方案,其中\ SQLEXPRESS使用,启动项目是另一个类库,它不包含EF配置文件。只要我将启动项目设置为包含配置文件的项目,一切都按预期运行,并且使用了mssqllocaldb。
很难知道为什么,但这里有一些可能的原因
你的软件实际上取决于两个数据源(一个具有与某些客户端/信息和其他具有互补性的信息)许多系统或者设计依赖于超过1个数据库或数据源
谁创造了该解决方案的人有本地测试环境和生产环境,并可能发表评论,或通过其他方式在两者之间切换
需要检查的内容?...找到两个数据库是否具有完全相同的表名,存储过程等...基本确定两个数据源是否完全相同。
如果它们不一样是因为一个是开发票而另一个是其他的。