尝试创建新表时对象名称无效

时间:2018-12-29 10:06:49

标签: c# sql sql-server entity-framework

昨天从EF6开始,已经感到沮丧。

无论如何,就我的研究而言,EF可以创建一个不存在的数据库,也可以创建表。因此,我将我的连接字符串传递给了DbContext,如下所示:

public CampaignDbContext() : base("Data Source=xx;Initial Catalog=NewTestDb;User ID=xx;Password=xx;")
{ }

我的模型和整个DbContext类在这里最可能无关紧要,因此这就是我不添加代码的原因。无论如何,我的模型类称为Campaign,并且在DbContext类中,我已经声明了明显的方法:

public DbSet<Campaign> Campaigns { get; set; }

//Also added this
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
   Database.SetInitializer<CampaignDbContext>(null);
   base.OnModelCreating(modelBuilder);
}

现在,从测试方法中,当我填充Campaigns DbSet并调用时:

CampaignDbContext.SaveChanges();

我得到了错误:

  

无法打开登录请求的数据库“ NewTestDb”。登录失败

再一次在我的编程生涯中,我感到震惊。如果在SSMS /示例sql连接中从代码隐藏处传入,则在连接字符串(在dbcontext类中)中传递的相同凭据可以正常工作,但在这里不起作用。但是,当我从SSMS手动创建NewTestDb时,连接成功。现在,当我调用SaveChanges的{​​{1}}方法时,我得到了:

  

无效的对象名称'dbo.Campaigns'

我已经在SO职位上经历了很多工作,并且我的代码没有发现任何问题。有人可以指出我在哪里/我在做什么错吗?

P.S。我是EF的新手。

1 个答案:

答案 0 :(得分:0)

感谢bolkay。我想到了。原来我必须从Package Manager控制台运行以下特定命令:

enable-migrations
add-migration InitialMigration
update-database

现在,一切正常! 干杯!