2016-01-24 72 views
1

我有两个解决方案,使用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的,产地:公约)。

我的问题

什么是有些事情我可以检查看看他们为什么不同的表现?

回答

2

我找到了答案,多亏了这个帖子:

EF6 can't find LocalDBConnectionFactory

在解决方案,其中\ SQLEXPRESS使用,启动项目是另一个类库,它不包含EF配置文件。只要我将启动项目设置为包含配置文件的项目,一切都按预期运行,并且使用了mssqllocaldb。

0

很难知道为什么,但这里有一些可能的原因

  1. 你的软件实际上取决于两个数据源(一个具有与某些客户端/信息和其他具有互补性的信息)许多系统或者设计依赖于超过1个数据库或数据源

  2. 谁创造了该解决方案的人有本地测试环境和生产环境,并可能发表评论,或通过其他方式在两者之间切换

需要检查的内容?...找到两个数据库是否具有完全相同的表名,存储过程等...基本确定两个数据源是否完全相同。

如果它们不一样是因为一个是开发票而另一个是其他的。

相关问题