【发布时间】:2016-05-03 18:51:33
【问题描述】:
我有两个项目,每个项目都有自己的 DbContext 类,它们写入同一个 SQL Server 2012 数据库。
DbContext 类的形式如下:
public class BlogDbContext : DbContext
{
public BlogDbContext()
: base("CodeFirstTestConnString")
{
}
public BlogDbContext(string connectionString)
: base(connectionString)
{
}
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//modelBuilder.HasDefaultSchema("blogtest");
}
}
使用 Code First 迁移,我可以通过在每个项目中执行以下操作在(现有)数据库中创建表:
Enable-Migrations
Add-Migration Initial
Update-Database
这很好用,但是如果我在上面注释掉的行中添加设置默认架构(两个项目使用相同的架构),Update-Database 在第二个项目中失败,并出现错误“已经有一个名为 ' 的对象__MigrationHistory' 在数据库中。”。
通过运行“Update-Database -Verbose”,我可以看到更改了默认架构后,第二个项目执行了“CREATE TABLE [blogtest].[__MigrationHistory]”;如果我不更改默认架构,它只会在第一次尝试创建此表。
这是实体框架中的错误,还是我遗漏了什么?
【问题讨论】: